https://algowiki-project.org/w/ru/api.php?action=feedcontributions&user=VolkovNikita94&feedformat=atom
Алговики - Вклад участника [ru]
2024-03-28T12:18:09Z
Вклад участника
MediaWiki 1.34.0
https://algowiki-project.org/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:VolkovNikita94&diff=28373
Обсуждение участника:VolkovNikita94
2020-08-10T18:50:30Z
<p>VolkovNikita94: /* Параметрика Пакуля */</p>
<hr />
<div><tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "I" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "I - 1, J - 1"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<arg name = "K" val = "1..N"></arg><br />
<vertex condition = "K == 1" type = "2"><br />
<in bsrc = "1" src = "I, J"></in><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
<vertex condition = "K > 1" type = "1"><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Преобразование_фурье"><br />
{{#widget:Algoviewer<br />
|url=XML_Fourier/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int" value = "3"></param><br />
</params><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..2^N"></arg><br />
<vertex condition = "(J - 1) % (2^I) < 2^(I - 1)" type = "1"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J + 2^(I -1)"></in><br />
</vertex><br />
<vertex condition = "(J - 1) % (2^I) >= 2^(I - 1)" type = "2"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J - 2^(I - 1)"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
== Тестовые варианты 2020 ==<br />
<br />
<tabs><br />
<br />
<tab name="Вариант_01"><br />
{{#widget:Algoviewer<br />
|url=Variant_01/Variant_01.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 2"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1, j - 1"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i - 1, j, 1"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_02"><br />
{{#widget:Algoviewer<br />
|url=Variant_02/Variant_02.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 2, j"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "0" src = "i"></in><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i, j - 1, 1"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_03"><br />
{{#widget:Algoviewer<br />
|url=Variant_03/Variant_03.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i, j - 2"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i, j - 1, k"></in><br />
</vertex><br />
</block><br />
</algo><br />
<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_04"><br />
{{#widget:Algoviewer<br />
|url=Variant_04/Variant_04.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1, j - 1"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg> <br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i - 1, j, k"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
== Параметрика Пакуля ==<br />
<br />
<tabs><br />
<br />
<tab name="Параметрика"><br />
{{#widget:Algoviewer<br />
|url=Variant_parametric/Variant_par.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
<aparam name = "p0" type = "int"></aparam><br />
<aparam name = "p1" type = "int"></aparam><br />
<aparam name = "p2" type = "int"></aparam><br />
<aparam name = "p3" type = "int"></aparam><br />
<aparam name = "p4" type = "int"></aparam><br />
<aparam name = "p5" type = "int"></aparam><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i + p0"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "p3 == 0" type = "1"><br />
<in src = "i + p1, j + p2"></in><br />
</vertex><br />
<vertex condition = "p3 == 1" type = "1"><br />
<in src = "i + p1, j + p2"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1) and (p3 == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j == 1) and (k == 1) and (p3 == 0)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
<vertex condition = "((j > 1) or (k > 1)) and (p4 == 1)" type = "1"><br />
<in src = "i - 1 * (1 - p5), j - 1 * p5, 1"></in><br />
</vertex><br />
<vertex condition = "((j > 1) or (k > 1)) and (p4 == 0)" type = "1"><br />
<in src = "i - 1 * (1 - p5), j - 1 * p5, k"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пакулев"><br />
{{#widget:Algoviewer<br />
|url=Variant_pakulev/Variant_pak.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "(2 * i + j) <= (N + 1)" type = "1"><br />
</vertex><br />
<vertex condition = "((2 * i + j) > (N + 1)) and ((i + j) <= N)" type = "1"><br />
<in src = "i - 1, j + 2 * (N + 1 - i - j)"></in><br />
</vertex><br />
<vertex condition = "((i + j) > N) and ((2 * i + j) <= (2 * N))" type = "1"><br />
<in src = "i, j - 1 - 2 * ((i + j) - N - 1)"></in><br />
</vertex><br />
<vertex condition = "((2 * i + j) > (2 * N)) and ((i + j) <= (2 * N - 1))" type = "1"><br />
<in src = "i - 1 * (2 * i + j - 2 * N), 1"></in><br />
</vertex><br />
<vertex condition = "((i + j) > (2 * N - 1))" type = "1"><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:VolkovNikita94&diff=28372
Обсуждение участника:VolkovNikita94
2020-08-10T18:02:24Z
<p>VolkovNikita94: /* Параметрика Пакуля */</p>
<hr />
<div><tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "I" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "I - 1, J - 1"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<arg name = "K" val = "1..N"></arg><br />
<vertex condition = "K == 1" type = "2"><br />
<in bsrc = "1" src = "I, J"></in><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
<vertex condition = "K > 1" type = "1"><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Преобразование_фурье"><br />
{{#widget:Algoviewer<br />
|url=XML_Fourier/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int" value = "3"></param><br />
</params><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..2^N"></arg><br />
<vertex condition = "(J - 1) % (2^I) < 2^(I - 1)" type = "1"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J + 2^(I -1)"></in><br />
</vertex><br />
<vertex condition = "(J - 1) % (2^I) >= 2^(I - 1)" type = "2"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J - 2^(I - 1)"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
== Тестовые варианты 2020 ==<br />
<br />
<tabs><br />
<br />
<tab name="Вариант_01"><br />
{{#widget:Algoviewer<br />
|url=Variant_01/Variant_01.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 2"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1, j - 1"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i - 1, j, 1"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_02"><br />
{{#widget:Algoviewer<br />
|url=Variant_02/Variant_02.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 2, j"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "0" src = "i"></in><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i, j - 1, 1"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_03"><br />
{{#widget:Algoviewer<br />
|url=Variant_03/Variant_03.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i, j - 2"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i, j - 1, k"></in><br />
</vertex><br />
</block><br />
</algo><br />
<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_04"><br />
{{#widget:Algoviewer<br />
|url=Variant_04/Variant_04.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1, j - 1"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg> <br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i - 1, j, k"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
== Параметрика Пакуля ==<br />
<br />
<tabs><br />
<br />
<tab name="Параметрика"><br />
{{#widget:Algoviewer<br />
|url=Variant_parametric/Variant_par.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
<aparam name = "p0" type = "int"></aparam><br />
<aparam name = "p1" type = "int"></aparam><br />
<aparam name = "p2" type = "int"></aparam><br />
<aparam name = "p3" type = "int"></aparam><br />
<aparam name = "p4" type = "int"></aparam><br />
<aparam name = "p5" type = "int"></aparam><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i + p0"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "p3 == 0" type = "1"><br />
<in src = "i + p1, j + p2"></in><br />
</vertex><br />
<vertex condition = "p3 == 1" type = "1"><br />
<in src = "i + p1, j + p2"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1) and (p3 == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j == 1) and (k == 1) and (p3 == 0)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
<vertex condition = "((j > 1) or (k > 1)) and (p4 == 1)" type = "1"><br />
<in src = "i - 1 * (1 - p5), j - 1 * p5, 1"></in><br />
</vertex><br />
<vertex condition = "((j > 1) or (k > 1)) and (p4 == 0)" type = "1"><br />
<in src = "i - 1 * (1 - p5), j - 1 * p5, k"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:VolkovNikita94&diff=28371
Обсуждение участника:VolkovNikita94
2020-08-10T18:01:38Z
<p>VolkovNikita94: /* Параметрика Пакуля */</p>
<hr />
<div><tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "I" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "I - 1, J - 1"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<arg name = "K" val = "1..N"></arg><br />
<vertex condition = "K == 1" type = "2"><br />
<in bsrc = "1" src = "I, J"></in><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
<vertex condition = "K > 1" type = "1"><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Преобразование_фурье"><br />
{{#widget:Algoviewer<br />
|url=XML_Fourier/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int" value = "3"></param><br />
</params><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..2^N"></arg><br />
<vertex condition = "(J - 1) % (2^I) < 2^(I - 1)" type = "1"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J + 2^(I -1)"></in><br />
</vertex><br />
<vertex condition = "(J - 1) % (2^I) >= 2^(I - 1)" type = "2"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J - 2^(I - 1)"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
== Тестовые варианты 2020 ==<br />
<br />
<tabs><br />
<br />
<tab name="Вариант_01"><br />
{{#widget:Algoviewer<br />
|url=Variant_01/Variant_01.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 2"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1, j - 1"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i - 1, j, 1"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_02"><br />
{{#widget:Algoviewer<br />
|url=Variant_02/Variant_02.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 2, j"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "0" src = "i"></in><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i, j - 1, 1"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_03"><br />
{{#widget:Algoviewer<br />
|url=Variant_03/Variant_03.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i, j - 2"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i, j - 1, k"></in><br />
</vertex><br />
</block><br />
</algo><br />
<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_04"><br />
{{#widget:Algoviewer<br />
|url=Variant_04/Variant_04.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1, j - 1"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg> <br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i - 1, j, k"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
== Параметрика Пакуля ==<br />
<br />
<tab name="Параметрика"><br />
{{#widget:Algoviewer<br />
|url=Variant_parametric/Variant_par.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
<aparam name = "p0" type = "int"></aparam><br />
<aparam name = "p1" type = "int"></aparam><br />
<aparam name = "p2" type = "int"></aparam><br />
<aparam name = "p3" type = "int"></aparam><br />
<aparam name = "p4" type = "int"></aparam><br />
<aparam name = "p5" type = "int"></aparam><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i + p0"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "p3 == 0" type = "1"><br />
<in src = "i + p1, j + p2"></in><br />
</vertex><br />
<vertex condition = "p3 == 1" type = "1"><br />
<in src = "i + p1, j + p2"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1) and (p3 == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j == 1) and (k == 1) and (p3 == 0)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
<vertex condition = "((j > 1) or (k > 1)) and (p4 == 1)" type = "1"><br />
<in src = "i - 1 * (1 - p5), j - 1 * p5, 1"></in><br />
</vertex><br />
<vertex condition = "((j > 1) or (k > 1)) and (p4 == 0)" type = "1"><br />
<in src = "i - 1 * (1 - p5), j - 1 * p5, k"></in><br />
</vertex><br />
</block><br />
</algo><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:VolkovNikita94&diff=28370
Обсуждение участника:VolkovNikita94
2020-08-10T18:00:52Z
<p>VolkovNikita94: /* Параметрика Пакуля */ новая тема</p>
<hr />
<div><tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "I" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "I - 1, J - 1"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<arg name = "K" val = "1..N"></arg><br />
<vertex condition = "K == 1" type = "2"><br />
<in bsrc = "1" src = "I, J"></in><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
<vertex condition = "K > 1" type = "1"><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Преобразование_фурье"><br />
{{#widget:Algoviewer<br />
|url=XML_Fourier/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int" value = "3"></param><br />
</params><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..2^N"></arg><br />
<vertex condition = "(J - 1) % (2^I) < 2^(I - 1)" type = "1"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J + 2^(I -1)"></in><br />
</vertex><br />
<vertex condition = "(J - 1) % (2^I) >= 2^(I - 1)" type = "2"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J - 2^(I - 1)"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
== Тестовые варианты 2020 ==<br />
<br />
<tabs><br />
<br />
<tab name="Вариант_01"><br />
{{#widget:Algoviewer<br />
|url=Variant_01/Variant_01.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 2"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1, j - 1"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i - 1, j, 1"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_02"><br />
{{#widget:Algoviewer<br />
|url=Variant_02/Variant_02.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 2, j"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "0" src = "i"></in><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i, j - 1, 1"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_03"><br />
{{#widget:Algoviewer<br />
|url=Variant_03/Variant_03.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i, j - 2"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i, j - 1, k"></in><br />
</vertex><br />
</block><br />
</algo><br />
<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_04"><br />
{{#widget:Algoviewer<br />
|url=Variant_04/Variant_04.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1, j - 1"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg> <br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i - 1, j, k"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
== Параметрика Пакуля ==<br />
<br />
<tabs><br />
<br />
<tab name="Параметрика"><br />
{{#widget:Algoviewer<br />
|url=Variant_parametric/Variant_par.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
<aparam name = "p0" type = "int"></aparam><br />
<aparam name = "p1" type = "int"></aparam><br />
<aparam name = "p2" type = "int"></aparam><br />
<aparam name = "p3" type = "int"></aparam><br />
<aparam name = "p4" type = "int"></aparam><br />
<aparam name = "p5" type = "int"></aparam><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i + p0"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "p3 == 0" type = "1"><br />
<in src = "i + p1, j + p2"></in><br />
</vertex><br />
<vertex condition = "p3 == 1" type = "1"><br />
<in src = "i + p1, j + p2"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1) and (p3 == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j == 1) and (k == 1) and (p3 == 0)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
<vertex condition = "((j > 1) or (k > 1)) and (p4 == 1)" type = "1"><br />
<in src = "i - 1 * (1 - p5), j - 1 * p5, 1"></in><br />
</vertex><br />
<vertex condition = "((j > 1) or (k > 1)) and (p4 == 0)" type = "1"><br />
<in src = "i - 1 * (1 - p5), j - 1 * p5, k"></in><br />
</vertex><br />
</block><br />
</algo><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:VolkovNikita94&diff=28368
Обсуждение участника:VolkovNikita94
2020-07-28T22:16:40Z
<p>VolkovNikita94: /* Тестовые варианты 2017 */</p>
<hr />
<div><tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "I" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "I - 1, J - 1"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<arg name = "K" val = "1..N"></arg><br />
<vertex condition = "K == 1" type = "2"><br />
<in bsrc = "1" src = "I, J"></in><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
<vertex condition = "K > 1" type = "1"><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Преобразование_фурье"><br />
{{#widget:Algoviewer<br />
|url=XML_Fourier/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int" value = "3"></param><br />
</params><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..2^N"></arg><br />
<vertex condition = "(J - 1) % (2^I) < 2^(I - 1)" type = "1"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J + 2^(I -1)"></in><br />
</vertex><br />
<vertex condition = "(J - 1) % (2^I) >= 2^(I - 1)" type = "2"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J - 2^(I - 1)"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
== Тестовые варианты 2017 ==<br />
<br />
<tabs><br />
<br />
<tab name="Вариант_01"><br />
{{#widget:Algoviewer<br />
|url=Variant_01/Variant_01.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 2"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1, j - 1"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i - 1, j, 1"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_02"><br />
{{#widget:Algoviewer<br />
|url=Variant_02/Variant_02.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 2, j"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i, j - 1, 1"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_03"><br />
{{#widget:Algoviewer<br />
|url=Variant_03/Variant_03.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 2, j"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg><br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i - 1, j, k"></in><br />
</vertex><br />
</block><br />
</algo><br />
<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_04"><br />
{{#widget:Algoviewer<br />
|url=Variant_04/Variant_04.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "M" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 2"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "i - 1, j - 1"></in><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..M"></arg><br />
<arg name = "k" val = "1..N-1"></arg> <br />
<vertex condition = "(j == 1) and (k == 1)" type = "1"><br />
<in bsrc = "1" src = "i, M"></in><br />
</vertex><br />
<vertex condition = "(j > 1) or (k > 1)" type = "1"><br />
<in src = "i, j - 1, k"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:VolkovNikita94&diff=28367
Обсуждение участника:VolkovNikita94
2020-07-28T22:10:20Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "I" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "I - 1, J - 1"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<arg name = "K" val = "1..N"></arg><br />
<vertex condition = "K == 1" type = "2"><br />
<in bsrc = "1" src = "I, J"></in><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
<vertex condition = "K > 1" type = "1"><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Преобразование_фурье"><br />
{{#widget:Algoviewer<br />
|url=XML_Fourier/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int" value = "3"></param><br />
</params><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..2^N"></arg><br />
<vertex condition = "(J - 1) % (2^I) < 2^(I - 1)" type = "1"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J + 2^(I -1)"></in><br />
</vertex><br />
<vertex condition = "(J - 1) % (2^I) >= 2^(I - 1)" type = "2"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J - 2^(I - 1)"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
== Тестовые варианты 2017 ==<br />
<br />
<tabs><br />
<br />
<tab name="Вариант_01"><br />
{{#widget:Algoviewer<br />
|url=Variant_01/Variant_01.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_02"><br />
{{#widget:Algoviewer<br />
|url=Variant_02/Variant_02.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_03"><br />
{{#widget:Algoviewer<br />
|url=Variant_03/Variant_03.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_04"><br />
{{#widget:Algoviewer<br />
|url=Variant_04/Variant_04.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:VolkovNikita94&diff=28366
Обсуждение участника:VolkovNikita94
2020-07-28T22:09:00Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "I" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "I - 1, J - 1"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<arg name = "K" val = "1..N"></arg><br />
<vertex condition = "K == 1" type = "2"><br />
<in bsrc = "1" src = "I, J"></in><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
<vertex condition = "K > 1" type = "1"><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</tab><br />
<br />
<tab name="Преобразование_фурье"><br />
{{#widget:Algoviewer<br />
|url=XML_Fourier/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int" value = "3"></param><br />
</params><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..2^N"></arg><br />
<vertex condition = "(J - 1) % (2^I) < 2^(I - 1)" type = "1"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J + 2^(I -1)"></in><br />
</vertex><br />
<vertex condition = "(J - 1) % (2^I) >= 2^(I - 1)" type = "2"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J - 2^(I - 1)"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
== Тестовые варианты 2017 ==<br />
<br />
<tabs><br />
<br />
<tab name="Вариант_01"><br />
{{#widget:Algoviewer<br />
|url=Variant_01/Variant_01.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_02"><br />
{{#widget:Algoviewer<br />
|url=Variant_02/Variant_02.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_03"><br />
{{#widget:Algoviewer<br />
|url=Variant_03/Variant_03.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_04"><br />
{{#widget:Algoviewer<br />
|url=Variant_04/Variant_04.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:VolkovNikita94&diff=28365
Обсуждение участника:VolkovNikita94
2020-07-28T17:11:41Z
<p>VolkovNikita94: /* Тестовые варианты 2017 */ - Обновление ссылок</p>
<hr />
<div><tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "I" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "I - 1, J - 1"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<arg name = "K" val = "1..N"></arg><br />
<vertex condition = "K == 1" type = "2"><br />
<in bsrc = "1" src = "I, J"></in><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
<vertex condition = "K > 1" type = "1"><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</tab><br />
<br />
<tab name="Преобразование_фурье"><br />
{{#widget:Algoviewer<br />
|url=XML_Fourier/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int" value = "3"></param><br />
</params><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..2^N"></arg><br />
<vertex condition = "(J - 1) % (2^I) < 2^(I - 1)" type = "1"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J + 2^(I -1)"></in><br />
</vertex><br />
<vertex condition = "(J - 1) % (2^I) >= 2^(I - 1)" type = "2"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J - 2^(I - 1)"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
== Тестовые варианты 2017 ==<br />
<br />
<tabs><br />
<br />
<tab name="Вариант_01"><br />
{{#widget:Algoviewer<br />
|url=Variant_01/Variant_01.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_02"><br />
{{#widget:Algoviewer<br />
|url=Variant_02/Variant_02.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_03"><br />
{{#widget:Algoviewer<br />
|url=Variant_03/Variant_03.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_04"><br />
{{#widget:Algoviewer<br />
|url=Variant_04/Variant_04.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=28364
Участник:VolkovNikita94
2020-07-28T17:02:05Z
<p>VolkovNikita94: Удалил разделы, перенесенные в обсуждение.</p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "(j == 1)" type = "0"><br />
<in src = “i – 1, N”></in><br />
</vertex><br />
<vertex condition = "(j > 1)" type = "0"><br />
<in src = “i, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
<in src = “i - 1, j”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
<in src = “i - 2, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
<in src = “i - 1, j”></in><br />
<in src = “1, j”></in><br />
<in src = “i, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i, j – 1, k”></in><br />
<in src = “1, j - 1, k”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j – 1, k”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..2"></arg><br />
<br />
<vertex condition = "(j == 1) && (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(j > 1)" type = "0"><br />
<in src = “1, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = "i - 1, j, k"></in><br />
<in src = "i, j – 1, k"></in><br />
<in src = "i, j, k - 1"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..2"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i, j, k"></in><br />
<in src = "i - 1, j, k"></in><br />
<in src = "i, j – 1, k"></in><br />
<in src = "i, j, k - 1"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..2"></arg><br />
<vertex condition = "(i == 1) && (j == 1) && (k == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(i > 1) && (j > 1) && (k > 1)" type = "0"><br />
<in src = “1, 1, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..2"></arg><br />
<vertex condition = "k == 1" type = "0"><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j”></in><br />
</vertex><br />
<vertex condition = "k > 1" type = "0"><br />
<in src = “i, j, 1”></in><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "P" type = "int"></param><br />
<param name = "Q" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..P"></arg><br />
<arg name = "k" val = "1..Q"></arg><br />
<vertex condition = "(i > 1) && (j > 1)" type = "0"><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j”></in><br />
<in src = “i, j, k -1”></in><br />
</vertex><br />
<vertex condition = "(i > 1) || (j > 1)" type = "0"><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:VolkovNikita94&diff=28363
Обсуждение участника:VolkovNikita94
2020-07-28T17:00:51Z
<p>VolkovNikita94: /* Тестовые варианты 2017 */ - чистка лишнего</p>
<hr />
<div><tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "I" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "I - 1, J - 1"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<arg name = "K" val = "1..N"></arg><br />
<vertex condition = "K == 1" type = "2"><br />
<in bsrc = "1" src = "I, J"></in><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
<vertex condition = "K > 1" type = "1"><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</tab><br />
<br />
<tab name="Преобразование_фурье"><br />
{{#widget:Algoviewer<br />
|url=XML_Fourier/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int" value = "3"></param><br />
</params><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..2^N"></arg><br />
<vertex condition = "(J - 1) % (2^I) < 2^(I - 1)" type = "1"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J + 2^(I -1)"></in><br />
</vertex><br />
<vertex condition = "(J - 1) % (2^I) >= 2^(I - 1)" type = "2"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J - 2^(I - 1)"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
== Тестовые варианты 2017 ==<br />
<br />
<tabs><br />
<br />
<tab name="Вариант_01"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_02"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_03"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Вариант_04"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:VolkovNikita94&diff=28362
Обсуждение участника:VolkovNikita94
2020-07-28T16:56:58Z
<p>VolkovNikita94: /* Тестовые варианты 2017 */ новая тема</p>
<hr />
<div><tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "I" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "I - 1, J - 1"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<arg name = "K" val = "1..N"></arg><br />
<vertex condition = "K == 1" type = "2"><br />
<in bsrc = "1" src = "I, J"></in><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
<vertex condition = "K > 1" type = "1"><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</tab><br />
<br />
<tab name="Преобразование_фурье"><br />
{{#widget:Algoviewer<br />
|url=XML_Fourier/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int" value = "3"></param><br />
</params><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..2^N"></arg><br />
<vertex condition = "(J - 1) % (2^I) < 2^(I - 1)" type = "1"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J + 2^(I -1)"></in><br />
</vertex><br />
<vertex condition = "(J - 1) % (2^I) >= 2^(I - 1)" type = "2"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J - 2^(I - 1)"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
== Тестовые варианты 2017 ==<br />
<br />
<tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "I" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "I - 1, J - 1"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<arg name = "K" val = "1..N"></arg><br />
<vertex condition = "K == 1" type = "2"><br />
<in bsrc = "1" src = "I, J"></in><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
<vertex condition = "K > 1" type = "1"><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</tab><br />
<br />
<tab name="Преобразование_фурье"><br />
{{#widget:Algoviewer<br />
|url=XML_Fourier/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int" value = "3"></param><br />
</params><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..2^N"></arg><br />
<vertex condition = "(J - 1) % (2^I) < 2^(I - 1)" type = "1"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J + 2^(I -1)"></in><br />
</vertex><br />
<vertex condition = "(J - 1) % (2^I) >= 2^(I - 1)" type = "2"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J - 2^(I - 1)"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:VolkovNikita94&diff=28361
Обсуждение участника:VolkovNikita94
2020-07-28T16:55:05Z
<p>VolkovNikita94: Информация в обсуждении явно устаревшая, а держать 100500 вкладок на одной страничке становится накладно.</p>
<hr />
<div><tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "I" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "I - 1, J - 1"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<arg name = "K" val = "1..N"></arg><br />
<vertex condition = "K == 1" type = "2"><br />
<in bsrc = "1" src = "I, J"></in><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
<vertex condition = "K > 1" type = "1"><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</tab><br />
<br />
<tab name="Преобразование_фурье"><br />
{{#widget:Algoviewer<br />
|url=XML_Fourier/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int" value = "3"></param><br />
</params><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..2^N"></arg><br />
<vertex condition = "(J - 1) % (2^I) < 2^(I - 1)" type = "1"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J + 2^(I -1)"></in><br />
</vertex><br />
<vertex condition = "(J - 1) % (2^I) >= 2^(I - 1)" type = "2"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J - 2^(I - 1)"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=28360
Участник:VolkovNikita94
2020-07-13T21:54:05Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "(j == 1)" type = "0"><br />
<in src = “i – 1, N”></in><br />
</vertex><br />
<vertex condition = "(j > 1)" type = "0"><br />
<in src = “i, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
<in src = “i - 1, j”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
<in src = “i - 2, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
<in src = “i - 1, j”></in><br />
<in src = “1, j”></in><br />
<in src = “i, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i, j – 1, k”></in><br />
<in src = “1, j - 1, k”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j – 1, k”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..2"></arg><br />
<br />
<vertex condition = "(j == 1) && (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(j > 1)" type = "0"><br />
<in src = “1, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = "i - 1, j, k"></in><br />
<in src = "i, j – 1, k"></in><br />
<in src = "i, j, k - 1"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..2"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i, j, k"></in><br />
<in src = "i - 1, j, k"></in><br />
<in src = "i, j – 1, k"></in><br />
<in src = "i, j, k - 1"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..2"></arg><br />
<vertex condition = "(i == 1) && (j == 1) && (k == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(i > 1) && (j > 1) && (k > 1)" type = "0"><br />
<in src = “1, 1, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..2"></arg><br />
<vertex condition = "k == 1" type = "0"><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j”></in><br />
</vertex><br />
<vertex condition = "k > 1" type = "0"><br />
<in src = “i, j, 1”></in><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "P" type = "int"></param><br />
<param name = "Q" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..P"></arg><br />
<arg name = "k" val = "1..Q"></arg><br />
<vertex condition = "(i > 1) && (j > 1)" type = "0"><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j”></in><br />
<in src = “i, j, k -1”></in><br />
</vertex><br />
<vertex condition = "(i > 1) || (j > 1)" type = "0"><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
<tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "I" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "I - 1, J - 1"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<arg name = "K" val = "1..N"></arg><br />
<vertex condition = "K == 1" type = "2"><br />
<in bsrc = "1" src = "I, J"></in><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
<vertex condition = "K > 1" type = "1"><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</tab><br />
<br />
<tab name="Преобразование_фурье"><br />
{{#widget:Algoviewer<br />
|url=XML_Fourier/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int" value = "3"></param><br />
</params><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..2^N"></arg><br />
<vertex condition = "(J - 1) % (2^I) < 2^(I - 1)" type = "1"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J + 2^(I -1)"></in><br />
</vertex><br />
<vertex condition = "(J - 1) % (2^I) >= 2^(I - 1)" type = "2"><br />
<in src = "I - 1, J"></in><br />
<in src = "I - 1, J - 2^(I - 1)"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=28358
Участник:VolkovNikita94
2020-06-23T07:10:38Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "(j == 1)" type = "0"><br />
<in src = “i – 1, N”></in><br />
</vertex><br />
<vertex condition = "(j > 1)" type = "0"><br />
<in src = “i, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
<in src = “i - 1, j”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
<in src = “i - 2, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
<in src = “i - 1, j”></in><br />
<in src = “1, j”></in><br />
<in src = “i, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i, j – 1, k”></in><br />
<in src = “1, j - 1, k”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j – 1, k”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..2"></arg><br />
<br />
<vertex condition = "(j == 1) && (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(j > 1)" type = "0"><br />
<in src = “1, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = "i - 1, j, k"></in><br />
<in src = "i, j – 1, k"></in><br />
<in src = "i, j, k - 1"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..2"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i, j, k"></in><br />
<in src = "i - 1, j, k"></in><br />
<in src = "i, j – 1, k"></in><br />
<in src = "i, j, k - 1"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..2"></arg><br />
<vertex condition = "(i == 1) && (j == 1) && (k == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(i > 1) && (j > 1) && (k > 1)" type = "0"><br />
<in src = “1, 1, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..2"></arg><br />
<vertex condition = "k == 1" type = "0"><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j”></in><br />
</vertex><br />
<vertex condition = "k > 1" type = "0"><br />
<in src = “i, j, 1”></in><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "P" type = "int"></param><br />
<param name = "Q" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..P"></arg><br />
<arg name = "k" val = "1..Q"></arg><br />
<vertex condition = "(i > 1) && (j > 1)" type = "0"><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j”></in><br />
<in src = “i, j, k -1”></in><br />
</vertex><br />
<vertex condition = "(i > 1) || (j > 1)" type = "0"><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
<tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "I" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
</vertex><br />
</block><br />
<block id = "0" dims = "2"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<vertex condition = "" type = "1"><br />
<in src = "I - 1, J - 1"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "I" val = "1..N"></arg><br />
<arg name = "J" val = "1..N"></arg><br />
<arg name = "K" val = "1..N"></arg><br />
<vertex condition = "K == 1" type = "2"><br />
<in bsrc = "1" src = "I, J"></in><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
<vertex condition = "K > 1" type = "1"><br />
<in src = "I - 1, J, K + 2"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_3"><br />
{{#widget:Algoviewer<br />
|url=XML_task_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=28357
Участник:VolkovNikita94
2020-05-20T13:43:04Z
<p>VolkovNikita94: Залиты описания алгоритмов на черновом варианте итогового языка, который хотим использовать (user-friendly XML-разметка)</p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "(j == 1)" type = "0"><br />
<in src = “i – 1, N”></in><br />
</vertex><br />
<vertex condition = "(j > 1)" type = "0"><br />
<in src = “i, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
<in src = “i - 1, j”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
<in src = “i - 2, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i, j - 1”></in><br />
<in src = “i - 1, j”></in><br />
<in src = “1, j”></in><br />
<in src = “i, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i, j – 1, k”></in><br />
<in src = “1, j - 1, k”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<br />
<vertex condition = "" type = "0"><br />
<in src = “i, j – 1, k”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..2"></arg><br />
<br />
<vertex condition = "(j == 1) && (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(j > 1)" type = "0"><br />
<in src = “1, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = "i - 1, j, k"></in><br />
<in src = "i, j – 1, k"></in><br />
<in src = "i, j, k - 1"></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..2"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i, j, k"></in><br />
<in src = "i - 1, j, k"></in><br />
<in src = "i, j – 1, k"></in><br />
<in src = "i, j, k - 1"></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..2"></arg><br />
<vertex condition = "(i == 1) && (j == 1) && (k == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(i > 1) && (j > 1) && (k > 1)" type = "0"><br />
<in src = “1, 1, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..2"></arg><br />
<vertex condition = "k == 1" type = "0"><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j”></in><br />
</vertex><br />
<vertex condition = "k > 1" type = "0"><br />
<in src = “i, j, 1”></in><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j - 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
<param name = "P" type = "int"></param><br />
<param name = "Q" type = "int"></param><br />
</params><br />
<block dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..P"></arg><br />
<arg name = "k" val = "1..Q"></arg><br />
<vertex condition = "(i > 1) && (j > 1)" type = "0"><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j”></in><br />
<in src = “i, j, k -1”></in><br />
</vertex><br />
<vertex condition = "(i > 1) || (j > 1)" type = "0"><br />
<in src = “i, j – 1”></in><br />
<in src = “i - 1, j”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs><br />
<br />
<tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = “i – 2”></in><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in bsrc = "0" src = "i"></in><br />
</vertex><br />
</block><br />
<block id = "2" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "(k == 1) || (i == 1)" type = "0"><br />
</vertex><br />
<vertex condition = "(k > 1) && (i > 1)" type = "0"><br />
<in src = “1, j, 1”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Новая разметка:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<algo><br />
<params><br />
<param name = "N" type = "int"></param><br />
</params><br />
<block id = "0" dims = "1"><br />
<arg name = "i" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
</vertex><br />
</block><br />
<block id = "1" dims = "2"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<vertex condition = "" type = "0"><br />
<in src = "i – 1, j - 1"></in><br />
</vertex><br />
</block><br />
<block id = "0" dims = "3"><br />
<arg name = "i" val = "1..N"></arg><br />
<arg name = "j" val = "1..N"></arg><br />
<arg name = "k" val = "1..N"></arg><br />
<vertex condition = "k == 1" type = "1"><br />
<in src = “i - 1, j, k + 2”></in><br />
</vertex><br />
<vertex condition = "k > 1" type = "0"><br />
<in src = “i - 1, j, k + 2”></in><br />
</vertex><br />
</block><br />
</algo><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_3"><br />
{{#widget:Algoviewer<br />
|url=XML_task_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27681
Участник:VolkovNikita94
2019-12-23T03:25:12Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs><br />
<br />
<tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_3"><br />
{{#widget:Algoviewer<br />
|url=XML_task_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27652
Участник:VolkovNikita94
2019-12-03T18:20:40Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs><br />
<br />
<tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27651
Участник:VolkovNikita94
2019-12-03T18:11:31Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs><br />
<br />
<tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27650
Участник:VolkovNikita94
2019-12-03T18:09:54Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs><br />
<br />
<tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27647
Участник:VolkovNikita94
2019-12-02T19:31:16Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs><br />
<br />
<tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002_n8/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27646
Участник:VolkovNikita94
2019-12-02T18:47:10Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs><br />
<br />
<tabs><br />
<br />
<tab name="Специальный_пример_1_n4"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_1_n8"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001_n8/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27607
Участник:VolkovNikita94
2019-11-28T10:17:14Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs><br />
<br />
<tabs><br />
<br />
<tab name="Специальный_пример_1"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27606
Участник:VolkovNikita94
2019-11-28T10:13:31Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs><br />
<br />
<tabs><br />
<br />
<tab name="Специальный_пример_1"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27516
Участник:VolkovNikita94
2019-11-05T11:32:53Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
<tab name="Специальный_пример_1"><br />
{{#widget:Algoviewer<br />
|url=XML_task_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i - 2];<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i][j] + C[i];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i - 1][j][1];<br />
}<br />
}<br />
}<br />
</source><br />
</div><br />
</tab><br />
<br />
<tab name="Специальный_пример_2"><br />
{{#widget:Algoviewer<br />
|url=XML_task_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
for (int i = 1; i <= n; ++i) {<br />
C[i] = C[i] * e;<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
B[i][j] = B[i - 1][j - 1];<br />
}<br />
}<br />
for (int i = 1; i <= n; ++i) {<br />
for (int j = 1; j <= n; ++j) {<br />
for (int k = 1; k <= n; ++k) {<br />
A[i][j][k] = A[i][j][k] + A[i][j - 1][k - 2];<br />
}<br />
A[i][j][n] = A[i][j][n] + B[i][j];<br />
}<br />
}<br />
</source><br />
</div><br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27412
Участник:VolkovNikita94
2019-08-17T14:34:27Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27411
Участник:VolkovNikita94
2019-08-17T14:32:30Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=Givens/giv3/Algo_view_givens3.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27338
Участник:VolkovNikita94
2019-05-10T20:20:41Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=Givens/giv3/Algo_view_givens3.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Искуственный пример, демонстрирующий элементы визуализации<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27330
Участник:VolkovNikita94
2019-05-09T18:53:52Z
<p>VolkovNikita94: </p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Искуственный пример, демонстрирующий элементы визуализации<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1200<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27329
Участник:VolkovNikita94
2019-05-09T18:52:19Z
<p>VolkovNikita94: Спойлеры. Сделано без расширения, т.к ему нужен апдейт ядра, а апдейтить ядро в первый день админом - плохая затея.</p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
C++ реализация:<br />
<div class="mw-collapsible-content"><br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
</div><br />
</div><br />
<div class="collapser mw-collapsible mw-collapsed" style="width:1200px; overflow:auto;"><br />
Кодировка в XML:<br />
<div class="mw-collapsible-content"><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</div><br />
</div><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Искуственный пример, демонстрирующий элементы визуализации<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27314
Участник:VolkovNikita94
2019-04-21T17:16:43Z
<p>VolkovNikita94: </p>
<hr />
<div>{{#widget:Algoviewer<br />
|url=XML_Example_014/Example_householder.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br />
<tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Искуственный пример, демонстрирующий элементы визуализации<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27313
Участник:VolkovNikita94
2019-04-21T17:16:27Z
<p>VolkovNikita94: </p>
<hr />
<div>{{#widget:Algoviewer<br />
|url=XML_example_014/Example_householder.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br />
<tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Искуственный пример, демонстрирующий элементы визуализации<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27312
Участник:VolkovNikita94
2019-04-17T20:15:27Z
<p>VolkovNikita94: Пока окончательное добавление исходников.</p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
_src[rowId][colId] += _src[rowId][0];<br />
_src[rowId][colId] += _src[0][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId == 0 ? colId : 0];<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<source lang = "c++"><br />
void accumSum(int*** _src, int _nCol, int _nRow, int _nLayer)<br />
{<br />
for (int layerId = 0; layerId < _nLayer; ++layerId)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[layerId][rowId][colId] += _src[layerId][rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
} <br />
}<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Искуственный пример, демонстрирующий элементы визуализации<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27311
Участник:VolkovNikita94
2019-04-17T20:07:58Z
<p>VolkovNikita94: Добавлены исходники</p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[rowId][colId == 0 ? colId : colId - 1];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<source lang = "c++"><br />
int accumSum(int** _src, int _nCol, int _nRow)<br />
{<br />
for (int rowId = 0; rowId < _nRow; ++rowId)<br />
{<br />
for (int colId = 0; colId < _nCol; ++colId)<br />
{<br />
_src[rowId][colId] += _src[(rowId == 0 && colId < 2) ? rowId : rowId - 1][(rowId != 0 && colId > 1) ? colId : colId - 2];<br />
_src[rowId][colId] += _src[rowId == 0 ? rowId : rowId - 1][colId];<br />
}<br />
}<br />
return _src[_nRow - 1][_nCol - 1];<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Искуственный пример, демонстрирующий элементы визуализации<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27310
Участник:VolkovNikita94
2019-04-17T19:47:42Z
<p>VolkovNikita94: Пока окончательная правка XML файлов</p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Искуственный пример, демонстрирующий элементы визуализации<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=27309
Участник:VolkovNikita94
2019-04-17T19:25:17Z
<p>VolkovNikita94: Исправление описания примеров визуализации. Добавлены XML файлы и исходники. Часть XML-файлов не откорректирована, части исходников не хват.</p>
<hr />
<div><tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Чисто последовательная структура в 2D-представлении (последовательное суммирование)<br />
<source lang = "c++"><br />
int seqSum(const std::vector<int>& _src)<br />
{<br />
int resSum = 0;<br />
for (int srcId = 0; srcId < _src.size(); ++srcId)<br />
{<br />
resSum += _src[srcId];<br />
}<br />
return resSum;<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[n]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 2D вариант<br />
<source lang = "c++"><br />
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)<br />
{<br />
if (_src.size() != _res.size())<br />
return;<br />
<br />
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)<br />
{<br />
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )<br />
{<br />
_res[srcGrpId] += _src[srcGrpId][srcElId];<br />
}<br />
}<br />
return;<br />
}<br />
</source><br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
</altarea><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом<br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-2]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="1" num_groups="2"><br />
<ext_param name="n"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="4"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=n]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="5"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+2<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1-1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i2+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[1]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[i2-n<=0]]></condition><br />
<condition><![CDATA[-n+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="5"><br />
<condition><![CDATA[-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой<br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="3"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+2<=0]]></condition><br />
<condition><![CDATA[i2<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[1]]></coordinate><br />
<coordinate><![CDATA[i2-1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution> <br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-1<=0]]></condition><br />
<condition><![CDATA[i2-1>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Набор одномерных последовательных структур, независимых между собой - 3D вариант<br />
<source lang = "xml"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<algograph version="0.0.1"><br />
<algorithm num_ext_params="2" num_groups="2"><br />
<ext_param name="n"/><br />
<ext_param name="m"/><br />
<group id="0" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="1"><br />
<and_part id="0"><![CDATA[]]></and_part><br />
<statement id="0" num_inputs="1"><br />
<input id="0" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
<loop><br />
<loop><br />
<loop><br />
<group id="1" num_or_parts="1" num_oper="1"><br />
<or_part id="0" num_and_parts="6"><br />
<and_part id="0"><![CDATA[-i1<=-1]]></and_part><br />
<and_part id="1"><![CDATA[i1<=n]]></and_part><br />
<and_part id="2"><![CDATA[-i2<=-1]]></and_part><br />
<and_part id="3"><![CDATA[i2<=m]]></and_part><br />
<and_part id="4"><![CDATA[i3>=0]]></and_part><br />
<and_part id="5"><![CDATA[i3<=n-1]]></and_part><br />
<statement id="0" num_inputs="3"><br />
<input id="0" num_solutions="0"/><br />
<input id="1" num_solutions="2"><br />
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"><br />
<altarea num_conditions="7"><br />
<condition><![CDATA[-m+2<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
<condition><![CDATA[-i2+1<=0]]></condition><br />
<condition><![CDATA[i2+1<=m]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
</altarea><br />
<dependency><br />
<coordinate><![CDATA[i1]]></coordinate><br />
<coordinate><![CDATA[i2+1]]></coordinate><br />
<coordinate><![CDATA[i3]]></coordinate><br />
</dependency><br />
</solution><br />
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"><br />
<altarea num_conditions="6"><br />
<condition><![CDATA[i2-m<=0]]></condition><br />
<condition><![CDATA[i2-m>=0]]></condition><br />
<condition><![CDATA[-i1+1<=0]]></condition><br />
<condition><![CDATA[-i3<=0]]></condition><br />
<condition><![CDATA[i1-n<=0]]></condition><br />
<condition><![CDATA[i3-n+1<=0]]></condition><br />
</altarea><br />
</solution><br />
</input><br />
<input id="2" num_solutions="0"/><br />
</statement><br />
</or_part><br />
</group><br />
</loop><br />
</loop><br />
</loop><br />
</algorithm><br />
</algograph><br />
</source><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 2D-структуре<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Искуственный пример, демонстрирующий элементы визуализации<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательный набор 3D-структур, содержащих скошенный параллелизм<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример массовой рассылки данных в 3D-структуре<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Пример 3D-структуры с различными видами скошенного параллелизма<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
Последовательно-параллельное перемножение матриц<br />
</tab><br />
<br />
</tabs></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=25575
Участник:VolkovNikita94
2018-04-22T09:57:06Z
<p>VolkovNikita94: </p>
<hr />
<div><center><br />
<tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Набор одномерных последовательных структур, независимых между собой<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура со скошенным параллелизмом<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
</tabs><br />
</center><br />
<br />
<math>(x, y, z) -> (0, 0, \sqrt{(x^2 + y^2 + z^2)})</math></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=25574
Участник:VolkovNikita94
2018-04-22T09:56:47Z
<p>VolkovNikita94: </p>
<hr />
<div><center><br />
<tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Набор одномерных последовательных структур, независимых между собой<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура со скошенным параллелизмом<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
</tabs><br />
</center><br />
<br />
<math>(x, y, z) -> (0, 0, \sqrt{(x^2 + y^2 + z^2)})</math></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=25573
Участник:VolkovNikita94
2018-04-22T09:54:45Z
<p>VolkovNikita94: </p>
<hr />
<div><center><br />
<tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Набор одномерных последовательных структур, независимых между собой<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура со скошенным параллелизмом<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
</tabs><br />
</center><br />
<br />
<math>(x, y, z) -> (0, 0, sqrt(2))</math></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BB%D0%BE%D1%82%D0%BD%D1%8B%D1%85_%D0%BD%D0%B5%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86_(%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B2%D0%B5%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82)&diff=25568
Перемножение плотных неособенных матриц (последовательный вещественный вариант)
2018-04-18T20:10:26Z
<p>VolkovNikita94: </p>
<hr />
<div>{{level-a}}<br />
<br />
Основные авторы описания: [[Участник:Frolov|А.В.Фролов]], [[Участник:VadimVV|Вад.В.Воеводин]] ([[#Описание локальности данных и вычислений|раздел 2.2]]), [[Участник:Teplov|А.М.Теплов]] (раздел [[#Масштабируемость алгоритма и его реализации|2.4]])<br />
<br />
== Свойства и структура алгоритма ==<br />
<br />
=== Общее описание алгоритма ===<br />
<br />
'''Перемножение матриц''' - одна из базовых задач в алгоритмах линейной алгебры, широко применяется в большом количестве разных методов.<br />
Здесь мы рассмотрим умножение <math>C = AB</math>&nbsp; плотных неособенных матриц (последовательный вещественный вариант), то есть тот вариант, где никак не используются ни специальный вид матрицы, ни ассоциативные свойства операции сложения<ref>В.В.Воеводин, Ю.А.Кузнецов. Матрицы и вычисления. М.: Наука, 1984.</ref>.<br />
<br />
=== Математическое описание алгоритма ===<br />
<br />
Исходные данные: плотная матрица <math>A</math> (элементы <math>a_{ij}</math>), плотная матрица <math>B</math> (элементы <math>b_{ij}</math>).<br />
<br />
Вычисляемые данные: плотная матрица <math>C</math> (элементы <math>c_{ij}</math>).<br />
<br />
Формулы метода:<br />
:<math><br />
\begin{align}<br />
c_{ij} = \sum_{k = 1}^{n} a_{ik} b_{kj}, \quad i \in [1, m], \quad j \in [1, l].<br />
\end{align}<br />
</math><br />
<br />
Существует также блочная версия метода, однако в данном описании разобран только точечный метод.<br />
<br />
=== Вычислительное ядро алгоритма ===<br />
<br />
Вычислительное ядро перемножения плотных неособенных матриц можно составить из множественных (всего их <math>l</math>) вычислений умножения матрицы <math>A</math> на столбцы матрицы <math>B</math>, или (при более детальном рассмотрении), из множественных (всего их <math>ml</math>) скалярных произведений строк матрицы <math>A</math> на столбцы матрицы <math>B</math>:<br />
<br />
:<math>\sum_{k = 1}^{n} a_{ik} b_{kj}</math> <br />
<br />
в режиме накопления или без него, в зависимости от требований задачи.<br />
<br />
=== Макроструктура алгоритма ===<br />
<br />
Как уже записано в [[#Вычислительное ядро алгоритма|описании ядра алгоритма]], основную часть умножения матриц составляют множественные (всего <math>ml</math>) вычисления скалярных произведений строк матрицы <math>A</math> на столбцы матрицы <math>B</math><br />
<br />
:<math>\sum_{k = 1}^{n} a_{ik} b_{kj}</math> <br />
<br />
в режиме накопления или без него.<br />
<br />
=== Схема реализации последовательного алгоритма ===<br />
<br />
Для всех <math>i</math> от <math>1</math> до <math>m</math> и для всех <math>j</math> от <math>1</math> до <math>l</math> выполняются<br />
<br />
:<math>c_{ij} = \sum_{k = 1}^{n} a_{ik} b_{kj}</math><br />
<br />
Особо отметим, что вычисления сумм вида <math>\sum_{k = 1}^{n} a_{ik} b_{kj}</math> производят в режиме накопления прибавлением к текущему (временному) значению вычисляемого элемента матрицы <math>c_{ij}</math> произведений <math>a_{ik} b_{kj}</math> для <math>k</math> от <math>1</math> до <math>n</math>, '''c возрастанием''' <math>k</math>, вначале все элементы инициализируются нулями. При суммировании "по убыванию" общая схема принципиально не отличается и потому нами не рассматривается. Другие порядки выполнения суммирования приводят к изменению параллельных свойств алгоритма и будут рассматриваться нами в отдельных описаниях.<br />
<br />
=== Последовательная сложность алгоритма ===<br />
<br />
Для умножения двух квадратных матриц порядка <math>n</math> (т.е. при <math>m=n=l</math>) в последовательном (наиболее быстром) варианте требуется:<br />
<br />
* по <math>n^3</math> умножений и сложений.<br />
<br />
Для умножения матрицы размером <math>m</math> строк на <math>n</math> столбцов на матрицу размером <math>m</math> строк на <math>n</math> столбцов в последовательном (наиболее быстром) варианте требуется:<br />
<br />
* по <math>mnl</math> умножений и сложений.<br />
<br />
При этом использование режима накопления требует совершения умножений и сложений в режиме двойной точности (или использования функции вроде DPROD в Фортране), что ещё больше увеличивает затраты во времени, требуемом для выполнения умножения матриц.<br />
<br />
При классификации по последовательной сложности, таким образом, алгоритм умножения матриц относится к алгоритмам ''с кубической сложностью'' (в случае неквадратных матриц - с ''трилинейной'').<br />
<br />
=== Информационный граф ===<br />
<br />
Опишем [[глоссарий#Граф алгоритма|граф алгоритма]] как аналитически, так и в виде рисунка.<br />
<br />
Граф алгоритма умножения плотных матриц состоит из одной группы вершин, расположенной в целочисленных узлах трёхмерной области, соответствующая ей операция <math>a+bc</math>. <br />
<br />
Естественно введённые координаты области таковы: <br />
* <math>i</math> — меняется в диапазоне от <math>1</math> до <math>m</math>, принимая все целочисленные значения;<br />
* <math>j</math> — меняется в диапазоне от <math>1</math> до <math>l</math>, принимая все целочисленные значения;<br />
* <math>k</math> — меняется в диапазоне от <math>1</math> до <math>n</math>, принимая все целочисленные значения.<br />
<br />
Аргументы операции следующие:<br />
*<math>a</math>:<br />
** при <math>k = 1</math> константа <math>0</math>; <br />
** при <math>k > 1</math> — результат срабатывания операции, соответствующей вершине с координатами <math>i, j, k-1</math>;<br />
*<math>b</math> — элемент ''входных данных'', а именно <math>a_{ik}</math>;<br />
*<math>c</math> - элемент ''входных данных'' <math>b_{kj}</math>; <br />
<br />
Результат срабатывания операции является:<br />
* при <math>k < n</math> - ''промежуточным данным'' алгоритма;<br />
* при <math>k = n</math> - выходным данным <math>c_{ij}</math>.<br />
<br />
[[file:Dense mtrx product.png|thumb|center|800px|Рисунок 1. Умножение плотных матриц с отображением выходных данных]]<br />
<br/><br />
<br />
<center><br />
Интерактивное изображение графа алгоритма без входных и выходных данных для случая перемножения двух квадратных матриц порядка 3 и 4<br />
</center><br />
<br />
{{#widget:Algoviewer<br />
|url=mat_mul/mat_mul_3/Algo_view_matrix3.html<br />
|width=600<br />
|height=400<br />
|border=1<br />
}}<br />
<br />
{{#widget:Algoviewer<br />
|url=mat_mul/mat_mul_4/Algo_view_matrix4.html<br />
|width=600<br />
|height=400<br />
|border=1<br />
}}<br />
<br />
=== Ресурс параллелизма алгоритма ===<br />
<br />
Для алгоритма умножения квадратных матриц порядка n в параллельном варианте требуется последовательно выполнить следующие ярусы:<br />
<br />
* по <math>n</math> ярусов умножений и сложений (в каждом из ярусов — <math>n^2</math> операций).<br />
<br />
Для умножения матрицы размером <math>m</math> строк на <math>n</math> столбцов на матрицу размером <math>n</math> строк на <math>l</math> столбцов в последовательном (наиболее быстром) варианте требуется:<br />
<br />
* по <math>n</math> ярусов умножений и сложений (в каждом из ярусов — <math>ml</math> операций).<br />
<br />
При этом использование режима накопления требует совершения умножений и вычитаний в режиме двойной точности, а в параллельном варианте это означает, что практически все промежуточные вычисления для выполнения алгоритма в режиме накопления должны быть двойной точности. В отличие от последовательного варианта это означает некоторое увеличение требуемой памяти.<br />
<br />
При классификации по высоте ЯПФ, таким образом, алгоритм умножения матриц относится к алгоритмам ''с линейной сложностью''. При классификации по ширине ЯПФ его сложность также будет ''квадратичной'' (для квадратных матриц) или ''билинейной'' (для матриц общего вида).<br />
<br />
=== Входные и выходные данные алгоритма ===<br />
<br />
'''Входные данные''': матрица <math>A</math> (элементы <math>a_{ij}</math>), матрица <math>B</math> (элементы <math>b_{ij}</math>)).<br />
<br />
'''Объём входных данных''': <math>mn+nl</math> <br />
<br />
'''Выходные данные''': матрица <math>C</math> (элементы <math>c_{ij}</math>).<br />
<br />
'''Объём выходных данных''': <math>ml</math><br />
<br />
=== Свойства алгоритма ===<br />
<br />
Соотношение последовательной и параллельной сложности в случае неограниченных ресурсов, как хорошо видно, является ''квадратичным'' или ''билинейным'' (отношение кубической или трилинейной к линейной). <br />
<br />
При этом вычислительная мощность алгоритма умножения матриц, как отношение числа операций к суммарному объему входных и выходных данных – ''линейно''.<br />
<br />
При этом алгоритм умножения матриц полностью детерминирован. Использование другого порядка выполнения ассоциативных операций в данной версии нами не рассматривается.<br />
<br />
== Программная реализация алгоритма ==<br />
<br />
=== Особенности реализации последовательного алгоритма ===<br />
<br />
В простейшем варианте алгоритм умножения матриц на Фортране можно записать так:<br />
<br />
<source lang="fortran"><br />
<br />
DO I = 1, M<br />
DO J = 1, L<br />
S = 0.<br />
DO K = 1, N<br />
S = S + DPROD(A(I,K), B(K,J))<br />
END DO <br />
C(I, J) = S<br />
END DO<br />
END DO<br />
</source><br />
При этом для реализации режима накопления переменная <math>S</math> должна быть двойной точности.<br />
<br />
=== Локальность данных и вычислений ===<br />
==== Локальность реализации алгоритма ====<br />
===== Структура обращений в память и качественная оценка локальности =====<br />
<br />
[[file:matrmult 1.PNG|thumb|center|700px|Рисунок 2. Профили обращений для 6 вариантов перемножения матриц]]<br />
<br />
На рис.2 представлены 6 профилей обращений для различных вариантов классического перемножения матриц (в зависимости от выбранного порядка циклов). На каждом профиле хорошо выделяются фрагменты профилей для 3-х массивов, используемых в программе. При этом порядок обращений к разным массивам во всех 6 вариантах один и тот же; т.е. взаимодействие между массивами везде устроен одинаково. В этом случае отличия в локальности задаются внутренним строением фрагментов профиля для каждого массива в отдельности.<br />
<br />
Исходя из исходного кода, можно увидеть, что всего встречается 6 разных видов фрагментов для отдельных массивов (эти виды выделены на рис.2 зеленым). Стоит сделать два уточнения: 1) профиль для результирующего массива С всегда в 2 раза больше, поскольку к элементам этого массива всегда происходят по два обращения подряд; 2) если во внутреннем цикле используется элементы массива, то обращение к этому элементу выносится за пределы внутреннего цикла (в цикле используется скалярная переменная вместо него).<br />
<br />
Также заранее отметим, что рисунки по профилям получаются следующим образом: строится рисунок по общему профилю, после чего из него оставляется только часть для рассматриваемого массива. Доля обращений к одному массиву может меняться, поэтому и частота обращений на каждом рисунке может в значительной степени отличаться.<br />
<br />
Рассмотрим подробнее каждый из данных 6 фрагментов на примере массива С.<br />
<br />
'''Фрагмент 1.''' На рис.3 показано начало фрагмента 1 (здесь и далее начало фрагмента соответствует выделенной оранжевой области на рис.2). Можно увидеть, что данный фрагмент устроен достаточно просто: выполняется перебор некоторого блока элементов массива, затем данный перебор циклически повторяется. После этого происходит переход к следующему блоку элементов массива, и выполняется тот же перебор в цикле.<br />
<br />
Если рассмотреть фрагмент более подробно (рис.4), можно увидеть, что каждый перебор является на самом деле последовательным перебором, при этом к каждому элементу происходит обращение дважды.<br />
<br />
В результате можно сделать вывод, что фрагмент 1 обладает высокой пространственной локальностью (из-за последовательного перебора и последовательной смены блоков перебора), а также высокой временно́й локальностью (из-за двойного обращения к элементам, а также сгруппированности всех обращений к одному элементу в рамках одного блока перебора). <br />
<br />
[[file:matrmult 2.PNG|thumb|center|700px|Рисунок 3. Начало фрагмента 1]]<br />
[[file:matrmult 3.PNG|thumb|center|700px|Рисунок 4. Начало фрагмента 1, первые 3 итерации]]<br />
<br />
'''Фрагмент 2.''' На рис.5 представлено начало фрагмента 2. Видно, что данный фрагмент также представляет собой перебор элементов массива в цикле, однако в данном случае на каждой итерации цикла перебираются сразу все элементы массива, а не только элементы одного блока. При более подробном рассмотрении итерации (рис.6) видно, что здесь также происходит именно последовательный перебор, и также к каждому элементу обращение происходит дважды (поскольку это массив С).<br />
<br />
[[file:matrmult 4.PNG|thumb|center|700px|Рисунок 5. Начало фрагмента 2]]<br />
[[file:matrmult 5.PNG|thumb|center|700px|Рисунок 6. Начало фрагмента 2, часть первой итерации]]<br />
<br />
Такой фрагмент также обладает высокой пространственной локальностью, однако временна́я локальность несколько ниже, чем во фрагменте 1. Это связано с тем, что на каждой итерации цикла перебираются все элементы массива, а не только отдельный блок, т.е. повторные обращения происходят реже.<br />
<br />
'''Фрагмент 3.''' Начало данного фрагмента представлено на рисунке 7. Данный профиль является последовательным перебором всех элементов массива, однако более подробное рассмотрение показывает, что к каждому элементу происходит обращение дважды, при этом между обращениями происходит достаточно много других обращений. Это связано с указанным ранее замечанием касательно вынесения повторяющегося обращения за предел внутреннего цикла.<br />
<br />
[[file:matrmult 6.PNG|thumb|center|700px|Рисунок 7. Начало фрагмента 3]]<br />
[[file:matrmult 7.PNG|thumb|center|700px|Рисунок 8. Начало фрагмента 3, первые несколько обращений]]<br />
<br />
Такой фрагмент также обладает высокой пространственной локальностью, однако очень низкой временно́й, поскольку к каждому элементу обращение происходит только два раза.<br />
<br />
'''Фрагмент 4.''' По началу фрагмента 4 видно, что профиль снова состоит из перебора всех элементов массива, однако на этот раз перебор не последовательный, а с некоторым шагом. Также можно заметить, что на каждой новой итерации перебор с шагом начинается с элемента, индекс которого немного больше, чем на предыдущей итерации. В данном случае нет нужды рассматривать профиль более подробно, поскольку из данного рисунка можно получить всю необходимую информацию.<br />
<br />
По сравнению с предыдущим фрагментом, данный профиль обладает более низкой пространственной локальностью, поскольку перебор элементов идет с шагом, и также очень низкой временно́й локальностью, поскольку на каждой итерации происходят обращения к новым элементам.<br />
<br />
[[file:matrmult 8.PNG|thumb|center|700px|Рисунок 9. Начало фрагмента 4]]<br />
<br />
'''Фрагмент 5.''' В отличие от предыдущих фрагментов, исходя из визуализации начала данного фрагмента (рис.9), сложно сделать выводы относительно структуры обращения в память. Однако более подробное рассмотрение (рис.10) показывает, что данный профиль практически идентичен профилю предыдущего фрагмента. Более того, фрагмент 5 на самом деле состоит из итерационно повторяющихся фрагментов 4.<br />
<br />
[[file:matrmult 9.PNG|thumb|center|700px|Рисунок 10. Начало фрагмента 5]]<br />
[[file:matrmult 10.PNG|thumb|center|700px|Рисунок 11. Начало фрагмента 5, первые несколько итераций]]<br />
<br />
Данный фрагмент обладает по сравнению с фрагментом 4 практически такой же пространственной локальностью, однако более высокой временной локальностью. Причина в обоих случаях одна – в данном случае тот же набор обращений повторяется несколько раз.<br />
<br />
'''Фрагмент 6.''' Данный фрагмент, представленный на рис.12 и рис.13, так же сильно напоминает фрагмент 5, но с одним отличием. Во фрагменте 5 несколько раз повторяется фрагмент 4, в рамках которого выполняется несколько итераций, и на каждой итерации внутри фрагмента 4 используются разные элементы (поскольку первый элемент сдвигается на 1). В случае данного фрагмента выполняются все те же итерации, но в перемешанном виде. Сначала выполняются все итерации, начинающиеся с одного и того же элемента; затем все итерации, который начинаются с элемента, чей индекс идет следующим; и т.д.<br />
<br />
Такой фрагмент обладает более высокой и пространственной, и временно́й локальностью по сравнению с фрагментом 5, поскольку обращения в одним и тем же элементам расположены ближе друг к другу в профиле.<br />
<br />
[[file:matrmult 11.PNG|thumb|center|700px|Рисунок 12. Начало фрагмента 6]]<br />
[[file:matrmult 12.PNG|thumb|center|700px|Рисунок 13. Начало фрагмента 6, первые несколько итераций]]<br />
<br />
В итоге можно сказать, что наиболее низкой локальностью в целом обладают фрагменты 5 и 6. Фрагмент 4 также обладает низкой локальностью, однако содержит значительно меньшее число обращений, а значит, привносит меньший вклад в общий профиль обращений. Это позволяет определить, что наименее эффективными с точки зрения работы с памятью являются варианты kji и jki, поскольку каждый из них содержит фрагменты 5 и 6. Далее идут варианты ijk и jik – в них по одному такому фрагменту. Самые лучшие варианты – ikj и kij.<br />
<br />
===== Количественная оценка локальности =====<br />
<br />
Основные фрагменты реализации, на основе которых были получены количественные оценки, приведены [http://git.algowiki-project.org/Voevodin/locality/blob/master/benchmarks/matrix_mult/matrix_mult.h здесь] (функция Kernel***, где *** - порядок циклов (напр., KernelIJK) ). Условия запуска описаны [http://git.algowiki-project.org/Voevodin/locality/blob/master/README.md здесь].<br />
<br />
Первая оценка выполняется на основе характеристики daps, которая оценивает число выполненных обращений (чтений и записей) в память в секунду. Данная характеристика является аналогом оценки flops применительно к работе с памятью и является в большей степени оценкой производительности взаимодействия с памятью, чем оценкой локальности. Однако она служит хорошим источником информации, в том числе для сравнения с результатами по следующей характеристике cvg.<br />
<br />
На рис.14 приведены значения daps для реализаций распространенных алгоритмов, отсортированные по возрастанию (чем больше daps, тем в общем случае выше производительность). Можно увидеть, что, как и предполагалось наиболее эффективными являются варианты kij,ikj. Заметно хуже результат у вариантов jik,ijk, при этом эти варианты практически равны между собой. Самый плохой результат ожидаемо у вариантов jki,kji.<br />
<br />
[[file:matrmult daps ru.PNG|thumb|center|700px|Рисунок 14. Сравнение значений оценки daps]]<br />
<br />
Вторая характеристика – cvg – предназначена для получения более машинно-независимой оценки локальности. Она определяет, насколько часто в программе необходимо подтягивать данные в кэш-память. Соответственно, чем меньше значение cvg, тем реже это нужно делать, тем лучше локальность. <br />
<br />
На рис.15 приведены значения cvg для того же набора реализаций, отсортированные по убыванию (чем меньше cvg, тем в общем случае выше локальность). Относительное сравнение результатов по cvg в целом повторяет результаты daps.<br />
<br />
[[file:matrmult cvg.PNG|thumb|center|700px|Рисунок 15. Сравнение значений оценки cvg]]<br />
<br />
=== Возможные способы и особенности параллельной реализации алгоритма ===<br />
=== Масштабируемость алгоритма и его реализации ===<br />
==== Масштабируемость алгоритма ====<br />
==== Масштабируемость реализации алгоритма ====<br />
<br />
[[file:Масштабируемость перемножения матриц производительность.png|thumb|center|700px|Рисунок 16. Параллельная реализация произведения матриц Максимальная производительность. ]]<br />
[[file:Масштабируемость параллельной реализации перемножения матриц Эффективность.png|thumb|center|700px|Рисунок 17. Параллельная реализация произведения матриц Максимальная эффективность. ]]<br />
Набор изменяемых параметров запуска реализации алгоритма и границы значений параметров алгоритма: <br />
* число процессоров [4 : 1024]<br />
* размерность матрицы [1024 : 20480]<br />
Эффективность выполнения реализации алгоритма<br />
* Минимальная эффективность 4,71%<br />
* Максимальная эффективность 31,72%<br />
Оценка масштабируемости<br />
* По числу процессов: -0.0436 – при увеличении числа процессов эффективность убывает достаточно интенсивно на всей рассмотренной области изменений параметров запуска. Уменьшение эффективности на рассмотренной области работы параллельной программы звязано с увеличением числа пересылок с ростом числа процессов и как следствие ростом накладных расходов на организацию вычислений. Присутствует область, на которой при увеличении числа процессов эффективность возрастает, но при дальнейшем росте продолжает снижаться. Это объясняется декомпозицей данных, при которой наступает момент, когда размер матрицы позволяет блокам укладываться в КЭШ-память. Так же это подтверждает проявление этого явления, но со смещением по числу процессов, и при увеличении вычислительной сложности задачи.<br />
* По размеру задачи: -0.0255 – при увеличении размера задачи эффективность в целом уменьшается по рассматриваемой области, хотя и менее интенсивно, чем при увеличении числа процессов. Снижение эффективности объясняется тем, что при росте вычислительной сложности существенно возрастают объемы передаваемых данных. Присутствует область возрастания эффективности, на всех рассмотренных размерах матрицы. Это объясняется тем, что при малом размере задачи данные хорошо укладываются в КЭШ память, что приводит к высокой эффективности работы приложения при малом размере задачи. При дальнейшем увеличении размера эффективность уменьшается при выходе за границы КЭШ-памяти. <br />
* По двум направлениям: -0.000968 – при рассмотрении увеличения, как вычислительной сложности, так и числа процессов по всей рассмотренной области значений уменьшается, интенсивность уменьшения эффективности не очень высока. В совокупности с тем фактом, что разница между максимальной и минимальной эффективностью на рассмотренной области значений параметров составляет почти 25% говорит о том, что уменьшение эффективности по всей области довольно равномерное, но интенсивно лишь в не очень больших участках по площади. На остальной области значений параметров изменения эффективности не столь значительны и находятся на приблизительно одном и том же уровне.<br />
<br />
[http://git.algowiki-project.org/Teplov/Scalability/blob/master/matrixmult/matrixmult.c Реализация алгоритма на языке C].<br />
<br />
=== Динамические характеристики и эффективность реализации алгоритма ===<br />
=== Выводы для классов архитектур ===<br />
=== Существующие реализации алгоритма ===<br />
<br />
== Литература ==<br />
<references /><br />
<br />
[[Категория:Законченные статьи]]<br />
[[Категория:Матричные операции]]<br />
<br />
[[En:Dense matrix multiplication (serial version for real matrices)]]</div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=24962
Участник:VolkovNikita94
2017-12-03T22:16:43Z
<p>VolkovNikita94: </p>
<hr />
<div><center><br />
<tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Набор одномерных последовательных структур, независимых между собой<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура со скошенным параллелизмом<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура со скошенным параллелизмом и скошенной передачей данных<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
</tabs><br />
</center></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=24878
Участник:VolkovNikita94
2017-12-03T13:26:53Z
<p>VolkovNikita94: </p>
<hr />
<div><center><br />
<tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Набор одномерных последовательных структур, независимых между собой<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура с квадратным параллелизмом<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура со скошенным параллелизмом<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
</tabs><br />
</center></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=24877
Участник:VolkovNikita94
2017-12-03T12:45:49Z
<p>VolkovNikita94: </p>
<hr />
<div><center><br />
<tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Набор одномерных последовательных структур, независимых между собой<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура с квадратным параллелизмом<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Двумерная структура со скошенным параллелизмом<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
</tabs><br />
</center></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=24876
Участник:VolkovNikita94
2017-12-03T12:44:42Z
<p>VolkovNikita94: </p>
<hr />
<div><center><br />
<tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Чисто последовательная структура в 2D-представлении<br />
</center><br />
</tab><br />
<br />
</tabs><br />
</center></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=24875
Участник:VolkovNikita94
2017-12-03T12:43:23Z
<p>VolkovNikita94: </p>
<hr />
<div><center><br />
<tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
<br><br />
<center><br />
Пример двумерной структуры.<br />
</center><br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
</tabs><br />
</center></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=24874
Участник:VolkovNikita94
2017-12-03T12:41:59Z
<p>VolkovNikita94: </p>
<hr />
<div><center><br />
<tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
Пример двумерной структуры<br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
</tabs><br />
</center></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=24873
Участник:VolkovNikita94
2017-12-03T12:41:35Z
<p>VolkovNikita94: </p>
<hr />
<div><center><br />
<tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
|caption="проверка"<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
</tabs><br />
</center></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=24872
Участник:VolkovNikita94
2017-12-03T12:40:51Z
<p>VolkovNikita94: </p>
<hr />
<div><center><br />
<tabs><br />
<br />
<tab name="Последовательная 2D структура"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
</tabs><br />
</center></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=24871
Участник:VolkovNikita94
2017-12-03T12:40:20Z
<p>VolkovNikita94: </p>
<hr />
<div><center><br />
<tabs><br />
<br />
<tab name="Лодейников прислушался; над садом плыл смутный шорох..."><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
</tabs><br />
</center></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=24870
Участник:VolkovNikita94
2017-12-03T12:03:56Z
<p>VolkovNikita94: </p>
<hr />
<div><center><br />
<tabs><br />
<br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
<br />
</tabs><br />
</center></div>
VolkovNikita94
https://algowiki-project.org/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:VolkovNikita94&diff=24859
Участник:VolkovNikita94
2017-12-02T19:09:25Z
<p>VolkovNikita94: Отмена правки 24858, сделанной участником VolkovNikita94 (обс.)</p>
<hr />
<div><center><br />
<tabs><br />
<tab name="Пример 1"><br />
{{#widget:Algoviewer<br />
|url=XML_example_001/Example_001.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
</tabs><br />
</center><br />
<br />
<center><br />
<tabs><br />
<tab name="Пример 2"><br />
{{#widget:Algoviewer<br />
|url=XML_example_002/Example_002.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
</tabs><br />
</center><br />
<br />
<br />
<center><br />
<tabs><br />
<tab name="Пример 3"><br />
{{#widget:Algoviewer<br />
|url=XML_example_003/Example_003.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
</tabs><br />
</center><br />
<br />
<br />
<center><br />
<tabs><br />
<tab name="Пример 4"><br />
{{#widget:Algoviewer<br />
|url=XML_example_004/Example_004.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
</tabs><br />
</center><br />
<br />
<br />
<center><br />
<tabs><br />
<tab name="Пример 5"><br />
{{#widget:Algoviewer<br />
|url=XML_example_005/Example_005.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tabs><br />
</center><br />
<br />
<br />
<center><br />
<tabs><br />
<tab name="Пример 6"><br />
{{#widget:Algoviewer<br />
|url=XML_example_006/Example_006.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
</tabs><br />
</center><br />
<br />
<br />
<center><br />
<tabs><br />
<tab name="Пример 7"><br />
{{#widget:Algoviewer<br />
|url=XML_example_007/Example_007.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
</tabs><br />
</center><br />
<br />
<center><br />
<tabs><br />
<tab name="Пример 8"><br />
{{#widget:Algoviewer<br />
|url=XML_example_008/Example_008.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
</tabs><br />
</center><br />
<br />
<center><br />
<tabs><br />
<tab name="Пример 9"><br />
{{#widget:Algoviewer<br />
|url=XML_example_009/Example_009.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
</tabs><br />
</center><br />
<br />
<center><br />
<tabs><br />
<tab name="Пример 10"><br />
{{#widget:Algoviewer<br />
|url=XML_example_010/Example_010.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
</tabs><br />
</center><br />
<br />
<center><br />
<tabs><br />
<tab name="Пример 11"><br />
{{#widget:Algoviewer<br />
|url=XML_example_011/Example_011.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
</tabs><br />
</center><br />
<br />
<center><br />
<tabs><br />
<tab name="Пример 12"><br />
{{#widget:Algoviewer<br />
|url=XML_example_012/Example_012.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
</tabs><br />
</center><br />
<br />
<center><br />
<tabs><br />
<tab name="Пример 13"><br />
{{#widget:Algoviewer<br />
|url=XML_example_013/Example_013.html<br />
|width=1300<br />
|height=800<br />
|border=1<br />
}}<br />
</tab><br />
</tabs><br />
</center></div>
VolkovNikita94