ВУЗ:
Составители:
u[[q, k]] == 1,
ul[[q, k]] = Max[ul] + 1;
AppendTo[ulp, Max[ul]]
]
Посмотрим, как работают условия для Which, чтобы увидеть осуществление различных
частей шага 4a2 . Первое условие:
u[[q, k]] == 1 && uup == 1 && uback == 1 && ulup =!= ulback
Это условие наиболее однозначное, и если оно выполняется, делаем следующее:
ul[[q, k]] = Min[ulp[[ulback]], ulp[[ulup]] ];
ulp[[Max[ulp[[ulback]], ulp[[ulup]]] ]] =
Min[ulp[[ulback]], ulp[[ulup]]]
Второе и третье условие относятся к шагу 4a2b, и будут выполнены, если одно из условий
справедливо – True, а первое условие не выполняется.
u[[q, k]] == 1 && uup == 1, ul[[q, k]] = ulup
u[[q, k]] == 1 && uback == 1, ul[[q, k]] = ulback
Не обязательно рассматривать обе соседние ячейки в списке u, так как в списке ul
записаны такие же значения, потому в этом случае второго условия достаточно для
создания необходимой замены на участке ul.
Четвертое и последнее условие
u[[q, k]] == 1
Если все предыдущие условия не выполнены, а последнее выполняется, тогда
реализуется шаг 4a2a:
ul[[q, k]] = Max[ul] + 1; AppendTo[ulp, Max[ul]]
теперь запишем шаг 4 с помощью цикла Do
Do[
Which[u[[q, k]] == 1 && uup == 1 &&
uback == 1 && ulup =!= ulback,
ul[[q, k]] = Min[ulp[[ulback]], ulp[[ulup]] ];
ulp[[Max[ulp[[ulback]], ulp[[ulup]]] ]] =
Min[u
l
p[[ulback]], ulp[[ulup]]],
u[[q, k]] == 1 && uup == 1,
ul[[q, k]] = ulup,
u[[q, k]] == 1 && uback == 1,
ul[[q, k]] = ulback,
u[[q, k]] == 1,
ul[[q, k]] = Max[ul] + 1; AppendTo[ulp, Max[ul]]
],
{q, 2,n+1}, {k, 2, m+1}
]
В Шаге 5 создадим ряд целых чисел от 1 до величины, равной длине списка ulp
new=Range[Length[ulp]]
и используем этот ряд вместе со списком ulp, чтобы создать набор правил
преобразования
relabelrules1=Thread[new -> ulp]
95
Страницы
- « первая
- ‹ предыдущая
- …
- 93
- 94
- 95
- 96
- 97
- …
- следующая ›
- последняя »