D ∗
Przemysław Kl ˛esk pklesk@wi.zut.edu.pl
Katedra Metod Sztucznej Inteligencji i Matematyki Stosowanej
W nieznanym terenie (lub znanym tylko cz ˛e´sciowo) nale ˙zy doj´s´c do celu o podanych współrz ˛ednych. Koszty przej´s´c i przeszkody poznawane s ˛a na bie ˙z ˛aco w trakcie przechodzenia ´scie ˙zki (przykłady: rzeczywiste roboty mobilne, postaci w grach komputerowych).
S
G
S
G
S
G
S
G
S
G
S
G
S
G
S
G
S G
S
G
S G
S G
S
G S G
Algorytm Stentz’a (1994) — własno´sci
Znany równie ˙z pod nazw ˛a D ∗ , z intencj ˛a rozumienia nazwy jako dynamic A ∗ .
Mimo nazwy, przeprowadzany w sposób bli ˙zszy algorytmowi Dijkstry.
Algorytm realizuje optymalne post ˛epowanie w ´swietle
poznawanych na bie ˙z ˛aco informacji.
Algorytm Stentz’a — własno´sci
Algorytm działa iteracyjnie — ´scie ˙zka jest wyznaczana wielokrotnie.
Pierwszy przebieg jest wsteczn ˛a wersj ˛a a. Dijkstry — budujemy kolejk ˛e stanów id ˛ac od celu do startu.
Przy fizycznym przechodzeniu ´scie ˙zki i natrafieniu na niezgodno´s´c do´swiadczenia z dotychczasow ˛a wiedz ˛a aktualizujemy ´scie ˙zk ˛e.
Stany w kolejce mog ˛a wielokrotnie zmienia´c swoje koszty i wielokrotnie trafia´c do kolejki.
Algorytm jest efektywniejszy ni ˙z wielokrotne uruchamianie algorytmu
Dijkstry „od zera”.
Zbiór akcji i stanów
Niech A oznacza zbiór mo˙zliwych akcji. W szczególno´sci dla siatki kwadratów:
A = {↑, →, ↓, ←}.
Niech X oznacza zbiór stanów. Dla siatki kwadratów:
X = {x ij }, gdzie i numer wiersza, j numer kolumny.
Przez A(x) b ˛edzie oznaczany zbiór akcji mo ˙zliwych dla stanu x.
Wykonywanie akcji
Niech t(x, a) (transition) oznacza funkcj ˛e przenosz ˛ac ˛a pewien stan x z u ˙zyciem akcji a w nowy stan x ′ , tzn.
t(x, a) = x ′ .
Na przykład dla siatki kwadratów t(x 25 , → ) = x 26 .
Formalnie t jest funkcj ˛a t : X × A → X.
Koszty przej´s´c
Niech c(x, a) (costs of transition) oznacza funkcj ˛e ponoszonego kosztu, który trzeba ponie´s´c wykonuj ˛ac w x akcj ˛e a.
Formalnie c : X × A → R + ∪ {∞} .
Je ˙zeli wykonanie w x akcji a jest niemo ˙zliwe (przeszkoda lub brzeg mapy), to c(x, a) = ∞.
Taka posta´c funkcji c pozwala na ogóln ˛a reprezentacj ˛e mapy, gdzie przej´scia w pewien stan, ale z ró˙znych kierunków mog ˛ a mie´c ró˙zne koszty.
Je ˙zeli dla siatki kwadratów chcemy uto ˙zsami´c koszty przej´scia do tego samego stanu x ij , to:
c(x i−1,j , ↓ ) = c(x i+1,j , ↑ ) = c(x i,j−1 , → ) = c(x i,j+1 , ← ) = map(i, j) .
dla wszystkich i, j.
Gdy koszty przej´s´c uto ˙zsamione z map ˛a
S
G
map =
2 1 1 1 1 1 2 1 ∞ 1 2 1 2 2 1 1 ∞ 2 1 1 1 2 1 1 1
c(·, ↑) = c(·, →) = c(·, ↓) = c(·, ←) =
∞ ∞ ∞ ∞ ∞
2 1 1 1 1
1 2 1 ∞ 1
2 1 2 2 1
1 ∞ 2 1 1
1 1 1 1 ∞ 2 1 ∞ 1 ∞ 1 2 2 1 ∞
∞ 2 1 1 ∞
2 1 1 1 ∞
1 2 1 ∞ 1
2 1 2 2 1
1 ∞ 2 1 1
1 2 1 1 1
∞ ∞ ∞ ∞ ∞
∞ 2 1 1 1
∞ 1 2 1 ∞
∞ 2 1 2 2
∞ 1 ∞ 2 1
∞ 1 2 1 1
Zało ˙zenie pocz ˛atkowe
W najbardziej pesymistycznym przypadku zakładamy pełn ˛a niewiedz ˛e o mapie, z wyj ˛atkiem informacji o współrz ˛ednych startowych i docelowych.
Je ˙zeli przyjmiemy, ˙ze nieutrudnione niczym przej´scie kosztuje 1 jednostk ˛e, w przypadku pełnej niewiedzy, nale ˙zy nastawi´c:
∀ x, a c(x, a) = 1.
W szczególno´sci przyjmujemy, ˙ze nie znamy równie ˙z brzegów
planszy.
Wielko´sci u ˙zywane w algorytmie
Niech g current (x) oznacza aktualnie znany koszt przej´scia ze stanu x do stanu docelowego G.
Niech g via (x, x ′ ) oznacza aktualnie zany koszt przej´scia ze stanu x do stanu docelowego G, gdy podró˙zujemy przez stan x ′ .
Funkcja g via b ˛edzie tak naprawd ˛e rozpatrywana tylko dla x, x ′ b ˛ed ˛acych bezpo´srednimi s ˛asiadami.
Niech a b ˛edzie akcj ˛a, tak ˛a ˙ze t(x, a) = x ′ . Wówczas:
g via (x, x ′ ) = c(x, a) + g current (x ′ ). (1)
Wielko´sci u ˙zywane w algorytmie
Niech Q oznacz ˛a kolejk ˛e stanów przechowywan ˛a w algorytmie (analogicznie do algorytmów Dijkstry i A ∗ ).
Niech V oznacz ˛a map ˛e odwiedzonych stanów.
Niech g best (x) oznacza najlepsz ˛a (najmniejsz ˛a) znan ˛a warto´s´c kosztu dla stanu x podczas jego historii ˙zycia w kolejce Q. Wiadomo, ˙ze:
g best (x) 6 g current (x). (2)
Kolejka Q jest posortowana według g best .
Tymczasowy plan
Niech p(x) oznacza planowan ˛a akcj ˛e przyporz ˛adkowan ˛a obecnie do wykonania w stanie x.
Algorytm b ˛edzie wielokrotnie wyznaczał tymczasowy plan, czyli pewien ci ˛ag akcji
p 1 , p 2 , . . . , p k , p k+1 , . . . ,
które pozwalaj ˛a przeprowadzi´c aktualny stan pocz ˛atkowy w stan docelowy wg obecnej znajomo´sci kosztów przej´s´c c. Tym samym, okre´slona zostanie ´scie ˙zka stanów
x 1 , x 2 , . . . , x k , x k+1 , . . . , taka ˙ze
x k+1 = t(x k , p(x k )).
Posta´c (agent, robot) b ˛edzie pod ˛a ˙zała zgodnie z planem, a ˙z do
do´swiadczenia niezgodno´sci pomi ˛edzy znanym (zakładanym) kosztem
przej´scia a faktycznym.
Clue algorytmu Stentz’a
Dla pewnego stanu x załó ˙zmy, ˙ze istnieje akcja a przeprowadzaj ˛aca go w s ˛asiada x ′ . Je ˙zeli mamy ˙ze:
g via (x, x ′ ) < g current (x),
to istnieje szansa, ˙ze koszt g current (x) mo ˙ze by´c zredukowany.
Je ˙zeli dodatkowo:
g current (x ′ ) 6 g best (x),
to na pewno koszt g current (x ′ ) jest optymalny w ´swietle znanych informacji.
Gdy zachodz ˛a oba te warunki to g current (x) jest aktualizowane do
g via (x, x ′ ) i p(x) jest aktualizowane do a.
Algorytm „zewn ˛etrzny”
1 Zainicjalizuj wszystkie warto´sci g best , g current , g via zerami, oraz wszystkie p na puste.
2 Włó ˙z stan docelowy G do kolejki Q.
3 Wykonuj w p ˛etli algorytm Stentz’a, a ˙z do momentu, kiedy jako jego wynik zostanie zwrócony stan pocz ˛atkowy S. (w tym momencie algorytm Stentz’a zadziała równowa˙znie do wstecznego algorytmu Dijkstry)
4 Główna p ˛etla:
1 Wykonuj obecny plan p 1 , p 2 , . . . odwiedzaj ˛ac ci ˛ag stanów x k+1 = t(x k , p k ), gdzie x 1
oznacza aktualny stan S.
1 Je ˙zeli dla pewnego x k wida´c, ˙ze zastosowanie akcji p k skutkowałoby kosztem wi ˛ekszym ni ˙z znane c(x k , p k ), to uaktualnij c(x k , p k ) na prawdziwe, i przypisz:
g via (x k , x k+1 ) := c(x k , p k ) + g current (x k+1 ), g current (x k ) := g via (x k , x k+1 ).
Przerwij dalsze wykonywanie planu.
2 Je ˙zeli x k = G to przerwij algorytm. (punkt stopu)
3 Wstaw x k do Q. Zapami ˛etaj g last := g current (x k ). Ustaw S := x k .
4 Dopóki Q jest niepusta lub dopóki nie osi ˛agni ˛eto sytuacji, ˙ze g best (x) > g last dla wszystkich x w Q:
1 Wykonaj algorytm Stentz’a.
Algorytm Stentz’a (cz ˛e´s´c 1)
1 Pobierz z Q stan x o najmniejszym g best .
2 Je ˙zeli g best (x) < g current (x)
(tzn. ˙ze x zwi˛ekszył swój koszt b˛ed ˛ac w Q, i je˙zeli mo˙zna ten koszt poprawi´c podró˙zuj ˛ac przez jakiego´s s ˛asiada, dla którego optymalny koszt jest znany, to nale˙zy tak zrobi´c)
1 Dla ka ˙zdego a ∈ A(x), takiego ˙ze c(x, a) < ∞, sprawd´z dla x ′ = t(x, a) czy:
g via (x, x ′ ) < g current (x) i g current (x ′ ) 6 g best (x)? Je ˙zeli tak, to:
1 g current (x) := g via (x, x ′ ).
2 p(x) := a.
3 Dla wszystkich x ′ , takich ˙ze istnieje a ′ ∈ A(x ′ ) powoduj ˛ace t(x ′ , a ′ ) = x oraz c(x ′ , a ′ ) < ∞:
1 g via (x ′ , x) := c(x ′ , a ′ ) + g current (x).
2 Je ˙zeli x ′ nie jest w V, to:
1 g current (x ′ ) := g via (x ′ , x), g best (x ′ ) := g via (x ′ , x).
2 p(x ′ ) := a ′ .
3 Włó ˙z x ′ do Q.
3 Je ˙zeli koszt dla x ′ wydaje si ˛e niepoprawny, bo p(x ′ ) = a ′ , ale g via (x ′ , x) , g current (x ′ ), to:
1 g current (x ′ ) := g via (x ′ , x).
2 Włó ˙z x ′ do Q.
. .
Algorytm Stentz’a (cz ˛e´s´c 2)
. . .
3 (ci ˛ag dalszy ciała p˛etli 3)
4 Je ˙zeli p(x ′ ) , a ′ i g via (x ′ , x) < g current (x ′ ), to:
(tzn. ˙ze lepiej i´s´c z x ′ przez x ni˙z u˙zy´c akcji p(x ′ ))
1 Je ˙zeli g current (x) = g best (x), to: p(x ′ ) := a ′ i włó ˙z x ′ do Q, bo optymalny koszt dla x jest znany.
2 W przeciwnym razie: g best (x) := g current (x) (o ile x < Q), oraz włó ˙z x do Q.
5 (unikanie cykli w p) Je ˙zeli x ′ ∈ V i x ′ < Q, oraz
p(x ′ ) , a ′ i g via (x, x ′ ) < g current (x) i g current (x) > g best (x), to włó ˙z x ′ do Q ponownie.
4 Umie´s´c x w V.
S G
Na rysunkach g current pisane w ´srodku, g best w nawiasie, g via przy bokach. W opisie Q schemat: x → g best (x){g current (x)}, . . .
(a) (b)
S G
0 0 0 0 0 0
0 0 0 0 0 1
0 0 0 0 1 0
0 0 0 0 0 1
0 0 0 0 0 0
0 0 0 0 0 0
0
0
0
0
0 0
0
0 0
0
0 0
0 0
0 0
0 0
0 0
0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0
1 0
0
0 0
0
0 0 0
0
0 0 0
0
0 0 0
0
1 0 0
0
0 0
0 0
0 0
0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
1
0 0
0
0 0
0
0 0 0
0
0 0 0
0
0 0 0
0
0 0 0
0
0 0
0
0 0
0 0
0
0 0
0
0 0
0
0 0
0
0
H0L H0L H0L H0L H0L H0L
H0L H0L H0L H0L H0L H1L
H0L H0L H0L H0L H1L H0L
H0L H0L H0L H0L H0L H1L
H0L H0L H0L H0L H0L H0L
H0L H0L H0L H0L H0L H0L
S G
0 0 0 0 0 2
0 0 0 0 2 1
0 0 0 0 1 0
0 0 0 0 0 1
0 0 0 0 0 0
0 0 0 0 0 0
0
0 0
0
0 0
0
0 0
0
0 0
0 0
2 0
0 0
0 0
0
0 0
0 0
0 0
0 0
0 0
0 2
0 0
0
1 0
0
0 0
0
0 0 0
0
0 0 0
0
0 0 0
0
1 0 0
2
0 0
0 0
0 0
0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
1
0 0
0
0 0
0
0 0 0
0
0 0 0
0
0 0 0
0
0 0 0
0
0 0
0
0 0
0 0
0
0 0
0
0 0
0
0 0
0
0
H0L H0L H0L H0L H0L H2L
H0L H0L H0L H0L H2L H1L
H0L H0L H0L H0L H1L H0L
H0L H0L H0L H0L H0L H1L
H0L H0L H0L H0L H0L H0L
H0L H0L H0L H0L H0L H0L
x = (3, 6) pobrane z Q 3.2 wykonany dla x ′ = (2, 6) 3.2 wykonany dla x ′ = (4, 6) 3.2 wykonany dla x ′ = (3, 5)
x = (2, 6) pobrane z Q
3.2 wykonany dla x ′ = (1, 6)
3.2 wykonany dla x ′ = (2, 5)
(c) · · · (d) (wsteczny a. Dijkstry zako ´nczony)
S G
0 0 0 0 0 2
0 0 0 0 2 1
0 0 0 2 1 0
0 0 0 0 2 1
0 0 0 0 0 0
0 0 0 0 0 0
0
0
0
0
0 0
0
0 0
0
0 0
0 0
2 0
0
0
0 0
0
0 0
0
0
0 0
0
0
0 0
0
2
2 0
0
1 0
0
0
0 0
0
0 0
0
0
0 0
0
2
0 0
0
1
0 0
2
0 2
0
0
0 0
0
0 0
0
0
0 0
0
0
0 0
2
0
0 0
1
0 0
0
0
0 0
0
0 0
0
0
0 0
0
0
0 0
0
0
0 0
0
0 0
0
0 0
0 0
0
0 0
0
0 0
0
0 0
0
0
H0L H0L H0L H0L H0L H2L
H0L H0L H0L H0L H2L H1L
H0L H0L H0L H2L H1L H0L
H0L H0L H0L H0L H2L H1L
H0L H0L H0L H0L H0L H0L
H0L H0L H0L H0L H0L H0L
S G
0 6 5 4 3 2
6 5 4 3 2 1
5 4 3 2 1 0
6 5 4 3 2 1
0 0 5 4 3 2
0 0 0 5 4 3
0
0
0
6
0 5
5
0 4
4
0 3
3 5
2 4
0
6
6 0
5
5 0
0
4
4 6
5
3
3 5
4
2
2 4
3
1 3
0
5
0 6
4
0 6
5
3
5 5
4
2
4 4
3
1
3 3
2
2 2
6
0
0 5
5
0 0
4
4
0 0
3
3
5 5
2
2
4 4
1
3 3
0
0
0 0
0
0 0
5
5
0 0
4
4
0 0
3
3
5 5
2
4 4
0
0 0
0 0
0
0 0
5
5 0
4
4 0
3
5
H0L H6L H5L H4L H3L H2L
H6L H5L H4L H3L H2L H1L
H5L H4L H3L H2L H1L H0L
H6L H5L H4L H3L H2L H1L
H0L H0L H5L H4L H3L H2L
H0L H0L H0L H5L H4L H3L
x = (3, 5) pobrane z Q 3.2 wykonany dla x ′ = (2, 5) 3.2 wykonany dla x ′ = (4, 5) 3.2 wykonany dla x ′ = (3, 4)
Q : (4, 6) → 1{1}, (1, 6) → 2{2}, (3, 4) → 2{2}, (4, 5) → 2{2},
. . .
Q : (4, 2) → 5{5}, (1, 3) → 5{5}, (5, 3) → 5{5},
(6, 4) → 5{5}, (1, 2) → 6{6}, (4, 1) → 6{6},
Plan z aktualnego S: (→, →, →, →, →). Osi ˛agni ˛eto stan (3, 3). Niezgodno´s´c wykryta dla c ((3, 3), →).
S G
0 6 5 4 3 2
6 5 4 3 2 1
5 4 inf 2 1 0
6 5 4 3 2 1
0 0 5 4 3 2
0 0 0 5 4 3
0
0
0
6
0 5
5
0 4
4
0 3
3 5
2 4
0
6
6 0
5
5 0
0
4
4 6
5
3
3 5
4
2
2 4
3
1 3
0
5
0 6
4
0 6
5
inf
5 5
4
2
4 4
3
1
3 3
2
2 2
6
0
0 5
5
0 0
4
4
0 0
3
3
5 5
2
2
4 4
1
3 3
0
0
0 0
0
0 0
5
5
0 0
4
4
0 0
3
3
5 5
2
4 4
0
0 0
0 0
0
0 0
5
5 0
4
4 0
3
5
H0L H6L H5L H4L H3L H2L
H6L H5L H4L H3L H2L H1L
H5L H4L H3L H2L H1L H0L
H6L H5L H4L H3L H2L H1L
H0L H0L H5L H4L H3L H2L
H0L H0L H0L H5L H4L H3L
S G
0 6 5 4 3 2
6 5 4 3 2 1
5 4 inf 2 1 0
6 5 4 3 2 1
0 0 5 4 3 2
0 0 0 5 4 3
0
0
0
6
0 5
5
0 4
4
0 3
3 5
2 4
0
6
6 0
5
5 0
0
4
4 6
5
3
3 5
4
2
2 4
3
1 3
0
5
0 6
4
0 6
5
inf
5 5
4
2
4 4
3
1
3 3
2
2 2
6
0
0 5
5
0 0
4
4
0 0
3
3
5 5
2
2
4 4
1
3 3
0
0
0 0
0
0 0
5
5
0 0
4
4
0 0
3
3
5 5
2
4 4
0
0 0
0 0
0
0 0
5
5 0
4
4 0
3
5
H0L H6L H5L H4L H3L H2L
H6L H5L H4L H3L H2L H1L
H5L H4L H3L H2L H1L H0L
H6L H5L H4L H3L H2L H1L
H0L H0L H5L H4L H3L H2L
H0L H0L H0L H5L H4L H3L
(3, 3) wło ˙zony do Q g last = ∞,
Q : (3, 3) → 3{∞}, (4, 2) → 5{5}, (1, 3) → 5{5}, (5, 3) → 5{5}, (6, 4) → 5{5}, (1, 2) → 6{6},
(4, 1) → 6{6}, (2, 1) → 6{6}
Po pierwszym przebiegu algorytmu Stentz’a.
S G
0 6 5 4 3 2
6 5 4 3 2 1
5 inf inf 2 1 0
6 5 4 3 2 1
0 0 5 4 3 2
0 0 0 5 4 3
0
0
0
6
0 5
5
0 4
4
0 3
3 5
2 4
0
6
6 0
5
5 0
0
4
inf 6
5
3
3 5
4
2
2 4
3
1 3
0
5
0 6
inf
0 6
5
inf
5 5
4
2
4 inf
3
1
3 3
2
2 2
6
0
0 5
5
0 0
inf
4
0 0
3
3
5 5
2
2
4 4
1
3 3
0
0
0 0
0
0 0
5
5
0 0
4
4
0 0
3
3
5 5
2
4 4
0
0 0
0 0
0
0 0
5
5 0
4
4 0
3
5
H0L H6L H5L H4L H3L H2L
H6L H5L H4L H3L H2L H1L
H5L H4L H3L H2L H1L H0L
H6L H5L H4L H3L H2L H1L
H0L H0L H5L H4L H3L H2L
H0L H0L H0L H5L H4L H3L
S G
0 6 5 4 3 2
6 5 4 3 2 1
5 inf inf 2 1 0
6 5 4 3 2 1
0 0 5 4 3 2
0 0 0 5 4 3
0
0
0
6
0 5
5
0 4
4
0 3
3 5
2 4
0
6
6 0
5
5 0
0
4
inf 6
5
3
3 5
4
2
2 4
3
1 3
0
5
0 6
inf
0 6
5
inf
5 5
4
2
4 inf
3
1
3 3
2
2 2
6
0
0 5
5
0 0
inf
4
0 0
3
3
5 5
2
2
4 4
1
3 3
0
0
0 0
0
0 0
5
5
0 0
4
4
0 0
3
3
5 5
2
4 4
0
0 0
0 0
0
0 0
5
5 0
4
4 0
3
5
H0L H6L H5L H4L H3L H2L
H6L H5L H4L H3L H2L H1L
H5L H4L H3L H2L H1L H0L
H6L H5L H4L H3L H2L H1L
H0L H0L H5L H4L H3L H2L
H0L H0L H0L H5L H4L H3L
x = (3, 3) pobrane z Q
3.5 wykonany dla x ′ = (2, 3)
3.5 wykonany dla x ′ = (4, 3)
3.3 wykonany dla x ′ = (3, 2)
Po drugim przebiegu algorytmu Stentz’a.
S G
0 6 5 4 3 2
6 5 4 3 2 1
5 inf 5 2 1 0
6 5 4 3 2 1
0 0 5 4 3 2
0 0 0 5 4 3
0
0
0
6
0 5
5
0 4
4
0 3
3 5
2 4
0
6
6 0
5
5 0
0
4
inf 6
5
3
3 5
4
2
2 4
3
1 3
0
5
0 6
inf
0 6
5
inf
5 5
4
2
4 inf
3
1
3 3
2
2 2
6
0
0 5
5
0 0
inf
4
0 0
3
3
5 5
2
2
4 4
1
3 3
0
0
0 0
0
0 0
5
5
0 0
4
4
0 0
3
3
5 5
2
4 4
0
0 0
0 0
0
0 0
5
5 0
4
4 0
3
5
H0L H6L H5L H4L H3L H2L
H6L H5L H4L H3L H2L H1L
H5L H4L H5L H2L H1L H0L
H6L H5L H4L H3L H2L H1L
H0L H0L H5L H4L H3L H2L
H0L H0L H0L H5L H4L H3L
S G
0 6 5 4 3 2
6 5 4 3 2 1
5 inf 5 2 1 0
6 5 4 3 2 1
0 0 5 4 3 2
0 0 0 5 4 3
0
0
0
6
0 5
5
0 4
4
0 3
3 5
2 4
0
6
6 0
5
5 0
0
4
inf 6
5
3
3 5
4
2
2 4
3
1 3
0
5
0 6
inf
0 6
5
inf
5 5
4
2
4 inf
3
1
3 3
2
2 2
6
0
0 5
5
0 0
inf
4
0 0
3
3
5 5
2
2
4 4
1
3 3
0
0
0 0
0
0 0
5
5
0 0
4
4
0 0
3
3
5 5
2
4 4
0
0 0
0 0
0
0 0
5
5 0
4
4 0
3
5
H0L H6L H5L H4L H3L H2L
H6L H5L H4L H3L H2L H1L
H5L H4L H5L H2L H1L H0L
H6L H5L H4L H3L H2L H1L
H0L H0L H5L H4L H3L H2L
H0L H0L H0L H5L H4L H3L
x = (2, 3) pobrane z Q 3.2 wykonany dla x ′ = (1, 3) (neutralny) 3.4.1 wykonany dla x ′ = (3, 3) — przekierowanie z x ′ na x Q : (3, 2) → 4{∞}, (4, 3) → 4{4}, (4, 2) → 5{5},(3, 3) → 5{5}, (1, 3) → 5{5}
(5, 3) → 5{5}, (6, 4) → 5{5}, (1, 2) → 6{6}, (4, 1) → 6{6}, (2, 1) → 6{6}
Po trzecim przebiegu algorytmu Stentz’a.
S G
0 6 5 4 3 2
6 inf 4 3 2 1
inf inf 5 2 1 0
6 inf 4 3 2 1
0 0 5 4 3 2
0 0 0 5 4 3
0
0
0
6
0 5
5
0 4
4
0 3
3 5
2 4
0
6
6 0
5
inf 0
0
4
inf 6
5
3
3 5
4
2
2 4
3
1 3
0
inf
0 6
inf
0 6
5
inf
5 inf
4
2
4 inf
3
1
3 3
2
2 2
6
0
0 inf
5
0 0
inf
4
0 0
3
3
5 5
2
2
4 4
1
3 3
0
0
0 0
0
0 0
5
5
0 0
4
4
0 0
3
3
5 5
2
4 4
0
0 0
0 0
0
0 0
5
5 0
4
4 0
3
5
H0L H6L H5L H4L H3L H2L
H6L H5L H4L H3L H2L H1L
H5L H4L H5L H2L H1L H0L
H6L Hinf L H4L H3L H2L H1L
H0L H0L H5L H4L H3L H2L
H0L H0L H0L H5L H4L H3L
S G
0 6 5 4 3 2
6 inf 4 3 2 1
inf inf 5 2 1 0
6 inf 4 3 2 1
0 0 5 4 3 2
0 0 0 5 4 3
0
0
0
6
0 5
5
0 4
4
0 3
3 5
2 4
0
6
6 0
5
inf 0
0
4
inf 6
5
3
3 5
4
2
2 4
3
1 3
0
inf
0 6
inf
0 6
5
inf
5 inf
4
2
4 inf
3
1
3 3
2
2 2
6
0
0 inf
5
0 0
inf
4
0 0
3
3
5 5
2
2
4 4
1
3 3
0
0
0 0
0
0 0
5
5
0 0
4
4
0 0
3
3
5 5
2
4 4
0
0 0
0 0
0
0 0
5
5 0
4
4 0
3
5
H0L H6L H5L H4L H3L H2L
H6L H5L H4L H3L H2L H1L
H5L H4L H5L H2L H1L H0L
H6L Hinf L H4L H3L H2L H1L
H0L H0L H5L H4L H3L H2L
H0L H0L H0L H5L H4L H3L
x = (3, 2) pobrane z Q
3.3 wykonany dla x ′ = (2, 2)
3.2 wykonany dla x ′ = (4, 2)
3.3 wykonany dla x ′ = (3, 1)
. . . Kolejka opró˙zniona po 22 przebiegach algorytmu Stentz’a. Osi ˛agni ˛ety stan algortymu:
S G
7 6 5 4 3 2
8 5 4 3 2 1
7 6 5 2 1 0
8 5 4 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
6
8 5
5
7 4
4
6 3
3 5
2 4
8
6
8 7
5
7 9
6
4
6 6
5
3
3 5
4
2
2 4
3
1 3
9
7
9 6
6
6 8
5
inf
5 7
4
2
4 6
3
1
3 3
2
2 2
8
6
8 7
5
7 9
6
4
6 6
3
3
5 5
2
2
4 4
1
3 3
9
7
9 6
6
8 8
5
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H5L H4L H3L H2L H1L
H5L H6L H5L H2L H1L H0L
H8L H5L H4L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
S G
7 6 5 4 3 2
8 5 4 3 2 1
7 6 5 2 1 0
8 5 4 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
6
8 5
5
7 4
4
6 3
3 5
2 4
8
6
8 7
5
7 9
6
4
6 6
5
3
3 5
4
2
2 4
3
1 3
9
7
9 6
6
6 8
5
inf
5 7
4
2
4 6
3
1
3 3
2
2 2
8
6
8 7
5
7 9
6
4
6 6
3
3
5 5
2
2
4 4
1
3 3
9
7
9 6
6
8 8
5
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H5L H4L H3L H2L H1L
H5L H6L H5L H2L H1L H0L
H8L H5L H4L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
Q : ∅
Plan z aktualnego S: (↑, →, →, ↓, →). Osi ˛agni ˛eto stan (3, 3). Niezgodno´s´c wykryta dla c ((3, 3), ↑).
S G
7 6 5 4 3 2
8 5 4 3 2 1
7 6 inf 2 1 0
8 5 4 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
6
8 5
5
7 4
4
6 3
3 5
2 4
8
6
8 7
5
7 9
6
4
6 6
5
3
3 5
4
2
2 4
3
1 3
9
7
9 6
6
6 8
inf
inf
5 7
4
2
4 6
3
1
3 3
2
2 2
8
6
8 7
5
7 9
6
4
6 6
3
3
5 5
2
2
4 4
1
3 3
9
7
9 6
6
8 8
5
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H5L H4L H3L H2L H1L
H5L H6L H5L H2L H1L H0L
H8L H5L H4L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
S G
7 6 5 4 3 2
8 5 4 3 2 1
7 6 inf 2 1 0
8 5 4 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
6
8 5
5
7 4
4
6 3
3 5
2 4
8
6
8 7
5
7 9
6
4
6 6
5
3
3 5
4
2
2 4
3
1 3
9
7
9 6
6
6 8
inf
inf
5 7
4
2
4 6
3
1
3 3
2
2 2
8
6
8 7
5
7 9
6
4
6 6
3
3
5 5
2
2
4 4
1
3 3
9
7
9 6
6
8 8
5
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H5L H4L H3L H2L H1L
H5L H6L H5L H2L H1L H0L
H8L H5L H4L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
(3, 3) wło ˙zony do Q
g last = ∞,
Q : (3, 3) → 5{∞}
Kolejka opró˙zniona po 1 przebiegu algorytmu Stentz’a.
S G
7 6 5 4 3 2
8 5 4 3 2 1
7 6 5 2 1 0
8 5 4 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
6
8 5
5
7 4
4
6 3
3 5
2 4
8
6
8 7
5
7 9
6
4
6 6
5
3
3 5
4
2
2 4
3
1 3
9
7
9 6
6
6 8
inf
inf
5 7
4
2
4 6
3
1
3 3
2
2 2
8
6
8 7
5
7 9
6
4
6 6
3
3
5 5
2
2
4 4
1
3 3
9
7
9 6
6
8 8
5
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H5L H4L H3L H2L H1L
H5L H6L H5L H2L H1L H0L
H8L H5L H4L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
S G
7 6 5 4 3 2
8 5 4 3 2 1
7 6 5 2 1 0
8 5 4 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
6
8 5
5
7 4
4
6 3
3 5
2 4
8
6
8 7
5
7 9
6
4
6 6
5
3
3 5
4
2
2 4
3
1 3
9
7
9 6
6
6 8
inf
inf
5 7
4
2
4 6
3
1
3 3
2
2 2
8
6
8 7
5
7 9
6
4
6 6
3
3
5 5
2
2
4 4
1
3 3
9
7
9 6
6
8 8
5
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H5L H4L H3L H2L H1L
H5L H6L H5L H2L H1L H0L
H8L H5L H4L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
x = (3, 3) pobrane z Q
2.1 wykonany dla x ′ = (4, 3) — przekierowanie z x na x ′
Q : ∅
Plan z aktualnego S: (↓, →, ↑, →, →). Osi ˛agni ˛eto stan (4, 3). Niezgodno´s´c wykryta dla c ((4, 3), →).
S
G
7 6 5 4 3 2
8 5 4 3 2 1
7 6 5 2 1 0
8 5 inf 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
6
8 5
5
7 4
4
6 3
3 5
2 4
8
6
8 7
5
7 9
6
4
6 6
5
3
3 5
4
2
2 4
3
1 3
9
7
9 6
6
6 8
inf
inf
5 7
4
2
4 6
3
1
3 3
2
2 2
8
6
8 7
5
7 9
6
inf
6 6
3
3
5 5
2
2
4 4
1
3 3
9
7
9 6
6
8 8
5
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H5L H4L H3L H2L H1L
H5L H6L H5L H2L H1L H0L
H8L H5L H4L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
S
G
7 6 5 4 3 2
8 5 4 3 2 1
7 6 5 2 1 0
8 5 inf 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
6
8 5
5
7 4
4
6 3
3 5
2 4
8
6
8 7
5
7 9
6
4
6 6
5
3
3 5
4
2
2 4
3
1 3
9
7
9 6
6
6 8
inf
inf
5 7
4
2
4 6
3
1
3 3
2
2 2
8
6
8 7
5
7 9
6
inf
6 6
3
3
5 5
2
2
4 4
1
3 3
9
7
9 6
6
8 8
5
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H5L H4L H3L H2L H1L
H5L H6L H5L H2L H1L H0L
H8L H5L H4L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
(4, 3) wło ˙zony do Q
g last = ∞,
Q : (4, 3) → 4{∞}
Kolejny plan wyprowadzony po 10 przebiegach algorytmu Stentz’a.
Plan z aktualnego S: (↓, →, →, →, ↑, ↑). Osi ˛agni ˛eto stan (4, 3). Niezgodno´s´c wykryta dla c ((4, 3), ↓).
S
G
7 6 5 4 3 2
8 5 4 3 2 1
7 6 7 2 1 0
8 7 inf 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
6
8 5
5
7 4
4
6 3
3 5
2 4
8
6
8 7
5
7 9
6
4
8 6
5
3
3 5
4
2
2 4
3
1 3
9
7
9 6
8
8 8
inf
inf
7 7
4
2
4 8
3
1
3 3
2
2 2
8
8
8 7
7
7 9
8
inf
inf 8
3
3
5 7
2
2
4 4
1
3 3
9
7
9 8
6
8 8
7
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H5L H4L H3L H2L H1L
H5L H6L H7L H2L H1L H0L
H8L H7L H6L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
S
G
7 6 5 4 3 2
8 5 4 3 2 1
7 6 7 2 1 0
8 7 inf 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
6
8 5
5
7 4
4
6 3
3 5
2 4
8
6
8 7
5
7 9
6
4
8 6
5
3
3 5
4
2
2 4
3
1 3
9
7
9 6
8
8 8
inf
inf
7 7
4
2
4 8
3
1
3 3
2
2 2
8
8
8 7
7
7 9
8
inf
inf 8
3
3
5 7
2
2
4 4
1
3 3
9
7
9 8
6
8 8
7
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H5L H4L H3L H2L H1L
H5L H6L H7L H2L H1L H0L
H8L H7L H6L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
(4, 3) wło ˙zony do Q
g last = ∞,
Q : (4, 3) → 6{∞}
Kolejny plan wyprowadzony po 4 przebiegach algorytmu Stentz’a.
Plan z aktualnego S: (↑, ←, ↑, →, →, →↓, →). Osi ˛agni ˛eto stan (2, 2). Niezgodno´s´c wykryta dla c ((2, 2), →).
S
G
7 6 5 4 3 2
8 inf 4 3 2 1
7 6 7 2 1 0
8 7 8 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
6
8 5
5
7 4
4
6 3
3 5
2 4
8
6
8 7
inf
7 9
6
4
8 6
5
3
3 5
4
2
2 4
3
1 3
9
7
9 6
8
8 8
inf
inf
9 7
4
2
4 8
3
1
3 3
2
2 2
8
8
8 7
9
7 9
8
inf
inf 8
3
3
5 9
2
2
4 4
1
3 3
9
7
9 8
6
8 8
9
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H5L H4L H3L H2L H1L
H5L H6L H7L H2L H1L H0L
H8L H7L H8L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
S
G
7 6 5 4 3 2
8 inf 4 3 2 1
7 6 7 2 1 0
8 7 8 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
6
8 5
5
7 4
4
6 3
3 5
2 4
8
6
8 7
inf
7 9
6
4
8 6
5
3
3 5
4
2
2 4
3
1 3
9
7
9 6
8
8 8
inf
inf
9 7
4
2
4 8
3
1
3 3
2
2 2
8
8
8 7
9
7 9
8
inf
inf 8
3
3
5 9
2
2
4 4
1
3 3
9
7
9 8
6
8 8
9
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H5L H4L H3L H2L H1L
H5L H6L H7L H2L H1L H0L
H8L H7L H8L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
(2, 2) wło ˙zony do Q
g last = ∞,
Kolejny plan wyprowadzony po 12 przebiegach algorytmu Stentz’a.
Plan z aktualnego S: (↑, →, ↓, →, →, ↓, →). Osi ˛agni ˛eto stan (1, 3). Niezgodno´s´c wykryta dla c ((3, 1), ↓).
S
G
7 6 inf 4 3 2
8 7 4 3 2 1
9 8 9 2 1 0
8 7 8 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
8
8 5
inf
7 4
4
6 3
3 5
2 4
8
8
10 7
inf
9 9
6
4
10 8
5
3
3 5
4
2
2 4
3
1 3
9
9
9 8
10
8 10
inf
inf
9 9
4
2
4 10
3
1
3 3
2
2 2
10
8
8 9
9
7 9
10
inf
inf 8
3
3
5 9
2
2
4 4
1
3 3
9
7
9 8
6
8 8
9
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H7L H4L H3L H2L H1L
H5L H6L H7L H2L H1L H0L
H8L H7L H8L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
S
G
7 6 inf 4 3 2
8 7 4 3 2 1
9 8 9 2 1 0
8 7 8 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
8
8 5
inf
7 4
4
6 3
3 5
2 4
8
8
10 7
inf
9 9
6
4
10 8
5
3
3 5
4
2
2 4
3
1 3
9
9
9 8
10
8 10
inf
inf
9 9
4
2
4 10
3
1
3 3
2
2 2
10
8
8 9
9
7 9
10
inf
inf 8
3
3
5 9
2
2
4 4
1
3 3
9
7
9 8
6
8 8
9
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H7L H4L H3L H2L H1L
H5L H6L H7L H2L H1L H0L
H8L H7L H8L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
(1, 3) wło ˙zony do Q
g last = ∞,
Q : (1, 3) → 5{∞}
Kolejny plan wyprowadzony po 1 przebiegu algorytmu Stentz’a.
Plan z aktualnego S: (→, →↓, ↓, →). Osi ˛ agni ˛ eto stan G = (3, 6).
S G
7 6 5 4 3 2
8 7 4 3 2 1
9 8 9 2 1 0
8 7 8 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
8
8 5
inf
7 4
4
6 3
3 5
2 4
8
8
10 7
inf
9 9
6
4
10 8
5
3
3 5
4
2
2 4
3
1 3
9
9
9 8
10
8 10
inf
inf
9 9
4
2
4 10
3
1
3 3
2
2 2
10
8
8 9
9
7 9
10
inf
inf 8
3
3
5 9
2
2
4 4
1
3 3
9
7
9 8
6
8 8
9
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H7L H4L H3L H2L H1L
H5L H6L H7L H2L H1L H0L
H8L H7L H8L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L
S G
7 6 5 4 3 2
8 7 4 3 2 1
9 8 9 2 1 0
8 7 8 3 2 1
7 6 5 4 3 2
8 7 6 5 4 3
7
9
6
8
8 5
inf
7 4
4
6 3
3 5
2 4
8
8
10 7
inf
9 9
6
4
10 8
5
3
3 5
4
2
2 4
3
1 3
9
9
9 8
10
8 10
inf
inf
9 9
4
2
4 10
3
1
3 3
2
2 2
10
8
8 9
9
7 9
10
inf
inf 8
3
3
5 9
2
2
4 4
1
3 3
9
7
9 8
6
8 8
9
5
7 7
4
4
6 6
3
3
5 5
2
4 4
8
8 7
7 9
6
6 8
5
5 7
4
4 6
3
5
H7L H6L H5L H4L H3L H2L
H8L H7L H4L H3L H2L H1L
H5L H6L H7L H2L H1L H0L
H8L H7L H8L H3L H2L H1L
H7L H6L H5L H4L H3L H2L
H8L H7L H6L H5L H4L H3L