mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-05-02 06:22:55 +08:00
Documentation for 0d766b0f8a
This commit is contained in:
@@ -749,11 +749,11 @@ template<typename T > </div>
|
||||
<p>Get matrix inverse using Row-transformations. Given matrix must be a square and non-singular. </p><dl class="section return"><dt>Returns</dt><dd>inverse matrix </dd></dl>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 251</span> {</div>
|
||||
<div class="line"><span class="lineno"> 252</span> <span class="comment">// Assuming A is square matrix</span></div>
|
||||
<div class="line"><span class="lineno"> 253</span> <span class="keywordtype">size_t</span> <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = A.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
|
||||
<div class="line"><span class="lineno"> 253</span> <span class="keywordtype">size_t</span> <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = A.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>();</div>
|
||||
<div class="line"><span class="lineno"> 254</span> </div>
|
||||
<div class="line"><span class="lineno"> 255</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix<double></a> inverse(N, <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray<double></a>(N));</div>
|
||||
<div class="line"><span class="lineno"> 256</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row < <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row++) {</div>
|
||||
<div class="line"><span class="lineno"> 257</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> col = 0; col < <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; col++) {</div>
|
||||
<div class="line"><span class="lineno"> 256</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row < <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row++) {</div>
|
||||
<div class="line"><span class="lineno"> 257</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> col = 0; col < <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; col++) {</div>
|
||||
<div class="line"><span class="lineno"> 258</span> <span class="comment">// create identity matrix</span></div>
|
||||
<div class="line"><span class="lineno"> 259</span> inverse[row][col] = (row == col) ? 1.f : 0.f;</div>
|
||||
<div class="line"><span class="lineno"> 260</span> }</div>
|
||||
@@ -766,22 +766,22 @@ template<typename T > </div>
|
||||
<div class="line"><span class="lineno"> 267</span> </div>
|
||||
<div class="line"><span class="lineno"> 268</span> <span class="comment">// preallocate a temporary matrix identical to A</span></div>
|
||||
<div class="line"><span class="lineno"> 269</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">matrix<double></a> temp(N, <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/valarray.html">std::valarray<double></a>(N));</div>
|
||||
<div class="line"><span class="lineno"> 270</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row < <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row++) {</div>
|
||||
<div class="line"><span class="lineno"> 271</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> col = 0; col < <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; col++)</div>
|
||||
<div class="line"><span class="lineno"> 270</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row < <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row++) {</div>
|
||||
<div class="line"><span class="lineno"> 271</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> col = 0; col < <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; col++)</div>
|
||||
<div class="line"><span class="lineno"> 272</span> temp[row][col] = <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(A[row][col]);</div>
|
||||
<div class="line"><span class="lineno"> 273</span> }</div>
|
||||
<div class="line"><span class="lineno"> 274</span> </div>
|
||||
<div class="line"><span class="lineno"> 275</span> <span class="comment">// start transformations</span></div>
|
||||
<div class="line"><span class="lineno"> 276</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row < <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row++) {</div>
|
||||
<div class="line"><span class="lineno"> 277</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row2 = row; row2 < <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> && temp[row][row] == 0; row2++) {</div>
|
||||
<div class="line"><span class="lineno"> 276</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row = 0; row < <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row++) {</div>
|
||||
<div class="line"><span class="lineno"> 277</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row2 = row; row2 < <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> && temp[row][row] == 0; row2++) {</div>
|
||||
<div class="line"><span class="lineno"> 278</span> <span class="comment">// this to ensure diagonal elements are not 0</span></div>
|
||||
<div class="line"><span class="lineno"> 279</span> temp[row] = temp[row] + temp[row2];</div>
|
||||
<div class="line"><span class="lineno"> 280</span> inverse[row] = inverse[row] + inverse[row2];</div>
|
||||
<div class="line"><span class="lineno"> 281</span> }</div>
|
||||
<div class="line"><span class="lineno"> 282</span> </div>
|
||||
<div class="line"><span class="lineno"> 283</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> col2 = row; col2 < <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> && temp[row][row] == 0; col2++) {</div>
|
||||
<div class="line"><span class="lineno"> 283</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> col2 = row; col2 < <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> && temp[row][row] == 0; col2++) {</div>
|
||||
<div class="line"><span class="lineno"> 284</span> <span class="comment">// this to further ensure diagonal elements are not 0</span></div>
|
||||
<div class="line"><span class="lineno"> 285</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row2 = 0; row2 < <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row2++) {</div>
|
||||
<div class="line"><span class="lineno"> 285</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row2 = 0; row2 < <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row2++) {</div>
|
||||
<div class="line"><span class="lineno"> 286</span> temp[row2][row] = temp[row2][row] + temp[row2][col2];</div>
|
||||
<div class="line"><span class="lineno"> 287</span> inverse[row2][row] =</div>
|
||||
<div class="line"><span class="lineno"> 288</span> inverse[row2][row] + inverse[row2][col2];</div>
|
||||
@@ -799,7 +799,7 @@ template<typename T > </div>
|
||||
<div class="line"><span class="lineno"> 300</span> temp[row] = temp[row] / divisor;</div>
|
||||
<div class="line"><span class="lineno"> 301</span> inverse[row] = inverse[row] / divisor;</div>
|
||||
<div class="line"><span class="lineno"> 302</span> <span class="comment">// Row transformations</span></div>
|
||||
<div class="line"><span class="lineno"> 303</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row2 = 0; row2 < <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row2++) {</div>
|
||||
<div class="line"><span class="lineno"> 303</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> row2 = 0; row2 < <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; row2++) {</div>
|
||||
<div class="line"><span class="lineno"> 304</span> <span class="keywordflow">if</span> (row2 == row)</div>
|
||||
<div class="line"><span class="lineno"> 305</span> <span class="keywordflow">continue</span>;</div>
|
||||
<div class="line"><span class="lineno"> 306</span> <span class="keywordtype">double</span> factor = temp[row2][row];</div>
|
||||
@@ -810,8 +810,8 @@ template<typename T > </div>
|
||||
<div class="line"><span class="lineno"> 311</span> </div>
|
||||
<div class="line"><span class="lineno"> 312</span> <span class="keywordflow">return</span> inverse;</div>
|
||||
<div class="line"><span class="lineno"> 313</span> }</div>
|
||||
<div class="ttc" id="adata__structures_2sparse__table_8cpp_html_a10f3ffb3f6f7e1b83d556b9c8de89a5d"><div class="ttname"><a href="../../d6/d42/data__structures_2sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">data_structures::sparse_table::N</a></div><div class="ttdeci">constexpr uint32_t N</div><div class="ttdoc">A struct to represent sparse table for min() as their invariant function, for the given array A....</div><div class="ttdef"><b>Definition</b> sparse_table.cpp:48</div></div>
|
||||
<div class="ttc" id="aendl_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a></div><div class="ttdeci">T endl(T... args)</div></div>
|
||||
<div class="ttc" id="asparse__table_8cpp_html_a10f3ffb3f6f7e1b83d556b9c8de89a5d"><div class="ttname"><a href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">data_structures::sparse_table::N</a></div><div class="ttdeci">constexpr uint32_t N</div><div class="ttdoc">A struct to represent sparse table for min() as their invariant function, for the given array A....</div><div class="ttdef"><b>Definition</b> sparse_table.cpp:48</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
<div class="dyncontent">
|
||||
@@ -967,15 +967,15 @@ template<typename T1 , typename T2 > </div>
|
||||
<dl class="section return"><dt>Returns</dt><dd>determinant of generated random matrix</dd></dl>
|
||||
<dl class="section warning"><dt>Warning</dt><dd>There will need to be a balance between the matrix size and the range of random numbers. If the matrix is large, the range of random numbers must be small to have a well defined keys. Or if the matrix is smaller, the random numbers range can be larger. For an 8x8 matrix, range should be no more than \([0,10]\) </dd></dl>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 119</span> {</div>
|
||||
<div class="line"><span class="lineno"> 120</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">M</a>->size(); i++) {</div>
|
||||
<div class="line"><span class="lineno"> 121</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j < <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">M</a>[0][0].size(); j++) {</div>
|
||||
<div class="line"><span class="lineno"> 122</span> <a class="code hl_variable" href="../../d6/d42/data__structures_2sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">M</a>[0][i][j] = <a class="code hl_function" href="#a629be41c1ab78850963e4ce14e1d11d9">rand_range<T1, T2></a>(a, b);</div>
|
||||
<div class="line"><span class="lineno"> 120</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">M</a>->size(); i++) {</div>
|
||||
<div class="line"><span class="lineno"> 121</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j < <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">M</a>[0][0].size(); j++) {</div>
|
||||
<div class="line"><span class="lineno"> 122</span> <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">M</a>[0][i][j] = <a class="code hl_function" href="#a629be41c1ab78850963e4ce14e1d11d9">rand_range<T1, T2></a>(a, b);</div>
|
||||
<div class="line"><span class="lineno"> 123</span> }</div>
|
||||
<div class="line"><span class="lineno"> 124</span> }</div>
|
||||
<div class="line"><span class="lineno"> 125</span> </div>
|
||||
<div class="line"><span class="lineno"> 126</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../d1/dbe/lu__decomposition_8h.html#a3108d43bd32c6fb3b3c158476c51ba7f">determinant_lu</a>(*M);</div>
|
||||
<div class="line"><span class="lineno"> 127</span> }</div>
|
||||
<div class="ttc" id="adata__structures_2sparse__table_8cpp_html_af7db62f21983565c64d5d42d2a49888e"><div class="ttname"><a href="../../d6/d42/data__structures_2sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">data_structures::sparse_table::M</a></div><div class="ttdeci">constexpr uint8_t M</div><div class="ttdoc">ceil(log2(N)).</div><div class="ttdef"><b>Definition</b> sparse_table.cpp:49</div></div>
|
||||
<div class="ttc" id="asparse__table_8cpp_html_af7db62f21983565c64d5d42d2a49888e"><div class="ttname"><a href="../../d8/dab/sparse__table_8cpp.html#af7db62f21983565c64d5d42d2a49888e">data_structures::sparse_table::M</a></div><div class="ttdeci">constexpr uint8_t M</div><div class="ttdoc">ceil(log2(N)).</div><div class="ttdef"><b>Definition</b> sparse_table.cpp:49</div></div>
|
||||
</div><!-- fragment --><div class="dynheader">
|
||||
Here is the call graph for this function:</div>
|
||||
<div class="dyncontent">
|
||||
|
||||
@@ -115,12 +115,13 @@ $(function(){initNavTree('d6/d26/house__robber_8cpp.html','../../'); initResizab
|
||||
<a href="#details">More...</a></p>
|
||||
<div class="textblock"><code>#include <cassert></code><br />
|
||||
<code>#include <climits></code><br />
|
||||
<code>#include <cstdint></code><br />
|
||||
<code>#include <iostream></code><br />
|
||||
<code>#include <vector></code><br />
|
||||
</div><div class="textblock"><div class="dynheader">
|
||||
Include dependency graph for house_robber.cpp:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d4/dd7/house__robber_8cpp__incl.svg" width="335" height="126"><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" frameborder="0" src="../../d4/dd7/house__robber_8cpp__incl.svg" width="419" height="126"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
||||
</div>
|
||||
</div><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
|
||||
|
||||
Reference in New Issue
Block a user