mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-03-25 06:12:11 +08:00
Documentation for f1eddf4d65
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.13.2"/>
|
||||
<meta name="generator" content="Doxygen 1.14.0"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>TheAlgorithms/C++: strings/boyer_moore.cpp File Reference</title>
|
||||
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
|
||||
@@ -19,7 +19,6 @@
|
||||
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../navtreedata.js"></script>
|
||||
<script type="text/javascript" src="../../navtree.js"></script>
|
||||
<script type="text/javascript" src="../../resize.js"></script>
|
||||
<script type="text/javascript" src="../../cookie.js"></script>
|
||||
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../search/searchdata.js"></script>
|
||||
@@ -60,26 +59,20 @@ window.MathJax = {
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.13.2 -->
|
||||
<!-- Generated by Doxygen 1.14.0 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() { codefold.init(1); });
|
||||
/* @license-end */
|
||||
$(function() { codefold.init(); });
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
<script type="text/javascript" src="../../menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('../../',true,false,'search.php','Search',true);
|
||||
$(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
@@ -94,10 +87,9 @@ $(function() {
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function(){initNavTree('d3/db2/boyer__moore_8cpp.html','../../'); initResizable(true); });
|
||||
/* @license-end */
|
||||
$(function(){initNavTree('d3/db2/boyer__moore_8cpp.html','../../',''); });
|
||||
</script>
|
||||
<div id="container">
|
||||
<div id="doc-content">
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
@@ -121,11 +113,6 @@ $(function(){initNavTree('d3/db2/boyer__moore_8cpp.html','../../'); initResizabl
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#nested-classes">Classes</a> |
|
||||
<a href="#namespaces">Namespaces</a> |
|
||||
<a href="#define-members">Macros</a> |
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle"><div class="title">boyer_moore.cpp File Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
@@ -141,63 +128,50 @@ $(function(){initNavTree('d3/db2/boyer__moore_8cpp.html','../../'); initResizabl
|
||||
</div><div class="textblock"><div class="dynheader">
|
||||
Include dependency graph for boyer_moore.cpp:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d1/db6/boyer__moore_8cpp__incl.svg" width="498" height="111"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
||||
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="../../d1/db6/boyer__moore_8cpp__incl.svg" width="498" height="111"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
||||
</div>
|
||||
</div>
|
||||
<p><a href="../../d3/db2/boyer__moore_8cpp_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
|
||||
Classes</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d5a/structstrings_1_1boyer__moore_1_1pattern.html">strings::boyer_moore::pattern</a></td></tr>
|
||||
<tr class="memitem:strings_3A_3Aboyer_5Fmoore_3A_3Apattern" id="r_strings_3A_3Aboyer_5Fmoore_3A_3Apattern"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d5a/structstrings_1_1boyer__moore_1_1pattern.html">strings::boyer_moore::pattern</a></td></tr>
|
||||
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A structure representing all the data we need to search the preprocessed pattern in text. <a href="../../dd/d5a/structstrings_1_1boyer__moore_1_1pattern.html#details">More...</a><br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 id="header-namespaces" class="groupheader"><a id="namespaces" name="namespaces"></a>
|
||||
Namespaces</h2></td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dcb/namespacestrings.html">strings</a></td></tr>
|
||||
<tr class="memitem:strings" id="r_strings"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dcb/namespacestrings.html">strings</a></td></tr>
|
||||
<tr class="memdesc:df/dcb/namespacestrings"><td class="mdescLeft"> </td><td class="mdescRight">String algorithms. <br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dbc/namespacestrings_1_1boyer__moore.html">strings::boyer_moore</a></td></tr>
|
||||
<tr class="memitem:strings_3A_3Aboyer_5Fmoore" id="r_strings_3A_3Aboyer_5Fmoore"><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dbc/namespacestrings_1_1boyer__moore.html">strings::boyer_moore</a></td></tr>
|
||||
<tr class="memdesc:d0/dbc/namespacestrings_1_1boyer__moore"><td class="mdescLeft"> </td><td class="mdescRight">Functions for the <a href="https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string-search_algorithm" target="_blank">Boyer Moore</a> algorithm implementation. <br /></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 id="header-define-members" class="groupheader"><a id="define-members" name="define-members"></a>
|
||||
Macros</h2></td></tr>
|
||||
<tr class="memitem:a77c872c08612d7b8861ba13bc9881cbd" id="r_a77c872c08612d7b8861ba13bc9881cbd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="#a77c872c08612d7b8861ba13bc9881cbd">APLHABET_SIZE</a>   CHAR_MAX</td></tr>
|
||||
<tr class="memdesc:a77c872c08612d7b8861ba13bc9881cbd"><td class="mdescLeft"> </td><td class="mdescRight">number of symbols in the alphabet we use <br /></td></tr>
|
||||
<tr class="separator:a77c872c08612d7b8861ba13bc9881cbd"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:aa709cf7fca02b7d3e1888423d5f739a1" id="r_aa709cf7fca02b7d3e1888423d5f739a1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dbc/namespacestrings_1_1boyer__moore.html#aa709cf7fca02b7d3e1888423d5f739a1">strings::boyer_moore::init_good_suffix</a> (const std::string &str, std::vector< size_t > &arg)</td></tr>
|
||||
<tr class="memdesc:aa709cf7fca02b7d3e1888423d5f739a1"><td class="mdescLeft"> </td><td class="mdescRight">A function that preprocess the good suffix thable. <br /></td></tr>
|
||||
<tr class="separator:aa709cf7fca02b7d3e1888423d5f739a1"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a2f6688c9bb3e692297a3aa09cebc1c00" id="r_a2f6688c9bb3e692297a3aa09cebc1c00"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dbc/namespacestrings_1_1boyer__moore.html#a2f6688c9bb3e692297a3aa09cebc1c00">strings::boyer_moore::init_bad_char</a> (const std::string &str, std::vector< size_t > &arg)</td></tr>
|
||||
<tr class="memdesc:a2f6688c9bb3e692297a3aa09cebc1c00"><td class="mdescLeft"> </td><td class="mdescRight">A function that preprocess the bad char table. <br /></td></tr>
|
||||
<tr class="separator:a2f6688c9bb3e692297a3aa09cebc1c00"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0b165af1dc341289fd705be4c67728f8" id="r_a0b165af1dc341289fd705be4c67728f8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dbc/namespacestrings_1_1boyer__moore.html#a0b165af1dc341289fd705be4c67728f8">strings::boyer_moore::init_pattern</a> (const std::string &str, <a class="el" href="../../dd/d5a/structstrings_1_1boyer__moore_1_1pattern.html">pattern</a> &arg)</td></tr>
|
||||
<tr class="memdesc:a0b165af1dc341289fd705be4c67728f8"><td class="mdescLeft"> </td><td class="mdescRight">A function that initializes pattern. <br /></td></tr>
|
||||
<tr class="separator:a0b165af1dc341289fd705be4c67728f8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a15703b553faed0d28202c10808cf9738" id="r_a15703b553faed0d28202c10808cf9738"><td class="memItemLeft" align="right" valign="top">std::vector< size_t > </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dbc/namespacestrings_1_1boyer__moore.html#a15703b553faed0d28202c10808cf9738">strings::boyer_moore::search</a> (const std::string &str, const <a class="el" href="../../dd/d5a/structstrings_1_1boyer__moore_1_1pattern.html">pattern</a> &arg)</td></tr>
|
||||
<tr class="memdesc:a15703b553faed0d28202c10808cf9738"><td class="mdescLeft"> </td><td class="mdescRight">A function that implements Boyer-Moore's algorithm. <br /></td></tr>
|
||||
<tr class="separator:a15703b553faed0d28202c10808cf9738"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a056122c8fe8fb0f5fca6428d3f7b5c3a" id="r_a056122c8fe8fb0f5fca6428d3f7b5c3a"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dbc/namespacestrings_1_1boyer__moore.html#a056122c8fe8fb0f5fca6428d3f7b5c3a">strings::boyer_moore::is_prefix</a> (const char *str, const char *pat, size_t len)</td></tr>
|
||||
<tr class="memdesc:a056122c8fe8fb0f5fca6428d3f7b5c3a"><td class="mdescLeft"> </td><td class="mdescRight">Check if pat is prefix of str. <br /></td></tr>
|
||||
<tr class="separator:a056122c8fe8fb0f5fca6428d3f7b5c3a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:acb8f69e7901ee7459d98bd4b9dda79d9" id="r_acb8f69e7901ee7459d98bd4b9dda79d9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#acb8f69e7901ee7459d98bd4b9dda79d9">and_test</a> (const char *text)</td></tr>
|
||||
<tr class="memdesc:acb8f69e7901ee7459d98bd4b9dda79d9"><td class="mdescLeft"> </td><td class="mdescRight">A test case in which we search for every appearance of the word 'and'. <br /></td></tr>
|
||||
<tr class="separator:acb8f69e7901ee7459d98bd4b9dda79d9"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ac8fac0dd4b19973da103a434143a16d2" id="r_ac8fac0dd4b19973da103a434143a16d2"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ac8fac0dd4b19973da103a434143a16d2">pat_test</a> (const char *text)</td></tr>
|
||||
<tr class="memdesc:ac8fac0dd4b19973da103a434143a16d2"><td class="mdescLeft"> </td><td class="mdescRight">A test case in which we search for every appearance of the word 'pat'. <br /></td></tr>
|
||||
<tr class="separator:ac8fac0dd4b19973da103a434143a16d2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a483bb8ccf42aaf7375a83e91490eda1e" id="r_a483bb8ccf42aaf7375a83e91490eda1e"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a483bb8ccf42aaf7375a83e91490eda1e">tests</a> ()</td></tr>
|
||||
<tr class="memdesc:a483bb8ccf42aaf7375a83e91490eda1e"><td class="mdescLeft"> </td><td class="mdescRight">Self-test implementations. <br /></td></tr>
|
||||
<tr class="separator:a483bb8ccf42aaf7375a83e91490eda1e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4" id="r_ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
|
||||
<tr class="memdesc:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="mdescLeft"> </td><td class="mdescRight">Main function. <br /></td></tr>
|
||||
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>The <a href="https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string-search_algorithm" target="_blank">Boyer–Moore</a> algorithm searches for occurrences of pattern P in text T by performing explicit character comparisons at different alignments. Instead of a brute-force search of all alignments (of which there are n - m + 1), Boyer–Moore uses information gained by preprocessing P to skip as many alignments as possible. </p>
|
||||
<p>The key insight in this algorithm is that if the end of the pattern is compared to the text, then jumps along the text can be made rather than checking every character of the text. The reason that this works is that in lining up the pattern against the text, the last character of the pattern is compared to the character in the text.</p>
|
||||
<p>If the characters do not match, there is no need to continue searching backwards along the text. This leaves us with two cases.</p>
|
||||
@@ -209,7 +183,7 @@ Functions</h2></td></tr>
|
||||
<p>The shift rules are implemented as constant-time table lookups, using tables generated during the preprocessing of P. </p><dl class="section author"><dt>Author</dt><dd><a href="https://github.com/stoychoX" target="_blank">Stoycho Kyosev</a> </dd></dl>
|
||||
|
||||
<p class="definition">Definition in file <a class="el" href="../../d3/db2/boyer__moore_8cpp_source.html">boyer_moore.cpp</a>.</p>
|
||||
</div><h2 class="groupheader">Macro Definition Documentation</h2>
|
||||
</div><a name="doc-define-members" id="doc-define-members"></a><h2 id="header-doc-define-members" class="groupheader">Macro Definition Documentation</h2>
|
||||
<a id="a77c872c08612d7b8861ba13bc9881cbd" name="a77c872c08612d7b8861ba13bc9881cbd"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a77c872c08612d7b8861ba13bc9881cbd">◆ </a></span>APLHABET_SIZE</h2>
|
||||
|
||||
@@ -229,7 +203,7 @@ Functions</h2></td></tr>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Function Documentation</h2>
|
||||
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Function Documentation</h2>
|
||||
<a id="acb8f69e7901ee7459d98bd4b9dda79d9" name="acb8f69e7901ee7459d98bd4b9dda79d9"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#acb8f69e7901ee7459d98bd4b9dda79d9">◆ </a></span>and_test()</h2>
|
||||
|
||||
@@ -347,7 +321,7 @@ Functions</h2></td></tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static void tests </td>
|
||||
<td class="memname">void tests </td>
|
||||
<td>(</td>
|
||||
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
|
||||
<td></td>
|
||||
@@ -385,11 +359,19 @@ Functions</h2></td></tr>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
</div><!-- doc-content -->
|
||||
<div id="page-nav" class="page-nav-panel">
|
||||
<div id="page-nav-resize-handle"></div>
|
||||
<div id="page-nav-tree">
|
||||
<div id="page-nav-contents">
|
||||
</div><!-- page-nav-contents -->
|
||||
</div><!-- page-nav-tree -->
|
||||
</div><!-- page-nav -->
|
||||
</div><!-- container -->
|
||||
<!-- start footer part -->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="../../dir_73a3cc5065b223eb41b02873c0e19f0e.html">strings</a></li><li class="navelem"><a class="el" href="../../d3/db2/boyer__moore_8cpp.html">boyer_moore.cpp</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
|
||||
<li class="navelem"><a href="../../dir_73a3cc5065b223eb41b02873c0e19f0e.html">strings</a></li><li class="navelem"><a href="../../d3/db2/boyer__moore_8cpp.html">boyer_moore.cpp</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user