Professional Documents
Culture Documents
Tomasz M. Gwizdałła
Wykładowca
Tomasz Gwizdałła
Katedra Systemów Inteligentnych WFIS UŁ
Pomorska 149/153, p.423B
tel: 6355709
e-mail: tomasz.gwizdalla@uni.lodz.pl
http://http://old.wfis.uni.lodz.pl/staff/tgwizdalla/
Motto
2 Algorytmy geometryczne 26
3 Wyszukiwanie wzorca 36
4 Algorytmy arytmetyczne 43
Literatura
Egzamin
Na ocenę dostateczną:
Zależy od prowadzącego, na ocenę wpływ mają:
obecność - 14 pkt. (∼ 18%)
aktywność - 14 pkt. (∼ 18%)
zadania podstawowe oddawane w terminie - 50 pkt. (∼ 64%)
Próg 60%.
projekt ratunkowy - 15 pkt.
Na oceny wyższe:
Ponad 80% - 3+, Ponad 90% - 4.
Wykonywane samodzielnie, krótkie projekty podawane przez
wykładowcę.
Na ocenę dostateczną:
Zależy od prowadzącego, na ocenę wpływ mają:
obecność - 6 pkt. (∼ 14%)
aktywność - 6 pkt. (∼ 14%)
zadania podstawowe oddawane w terminie - 30 pkt. (∼ 72%)
Próg 60%.
projekt ratunkowy - 10 pkt.
Na oceny wyższe:
Ponad 80% - 3+, Ponad 90% - 4.
Wykonywane samodzielnie, krótkie projekty podawane przez
wykładowcę.
Notes
Grafy
Tomasz M. Gwizdałła
Grafy
Pojęcia
Notes
Definicja
Grafy
Pojęcia
Klasyfikacja Notes
Grafy
Pojęcia
Definicje Notes
I Stopień wierzchołka
I w grafie nieskierowanym - liczba jego sąsiadów
I w grafie skierowanym - rozróżniamy stopień wejsciowy (liczbę
krawędzi, dla których dany wierzchołek jest pierwszym w
parze) i wyjsciowy (liczbę krawędzi, dla których dany
wierzchołek jest drugim w parze)
Grafy
Pojęcia
Definicje Notes
Grafy
Pojęcia
Definicje Notes
Grafy
Pojęcia
Definicje Notes
Grafy
Pojęcia
Definicje Notes
Grafy
Pojęcia
Ciekawostki Notes
Dowód:
Appel and W. Haken - 1976 (prawie 2000 przypadków szczególnych)
Grafy
Pojęcia
Implementacje Notes
Macierz sąsiedztwa
Niech nV będzie liczbą wierzchołków, nE - krawędzi
Budujemy tablicę nV × nV wypełniając ją zerami, jeśli wierzchołki
nie są sąsiadami, jedynkami, jeśli są
A B C D E A B C D E
A 0 1 1 0 1 A 0 1 1 0 1
B 1 0 1 1 0 B 0 0 1 1 0
C 1 1 0 1 1 C 0 0 0 1 0
D 0 1 1 0 1 D 0 1 0 0 1
E 1 0 1 1 0 E 1 0 1 0 0
Lista incydencji
A: B, C, E A: B, C, E
B: A, C, D B: C, D
C: A, B, D, E C: D
D: B, C, E D: B, E
E: A, C, D E: A, C
Złożoność pamięciowa - O(nV + nE )
Grafy
Pojęcia
Implementacje Notes
Lista krawędzi
Grafy
Pojęcia
Implementacje Notes
Macierz incydencji
W wierszach macierzy zapisujemy krawędzie, w kolumnach
wierzchołki. Wypełniamy wartościam1 {−1, 1, 2(pętla własna)}
A B C D E A B C D E
A-B -1 1 0 0 0 A-B -1 1 0 0 0
A-C -1 0 1 0 0 A-C -1 0 1 0 0
A-E -1 0 0 0 0 A-E -1 0 0 0 0
B-A 1 -1 0 0 0 B-C 0 -1 1 0 0
E-A 1 0 0 0 -1 E-A 1 0 0 0 -1
Grafy
Algorytmy
Przeszukiwania i sortowania Notes
DFS
Procedure DFS(long i)
if wierzchołek i nie jest odwiedzony then
zaznacz wierzchołek i jako odwiedzony
for wszyscy sąsiedzi wierzchołka i do
wywołaj DFS dla sąsiada
end for
end if
BFS
Algorithm: Breadth First Search - przeszukiwanie grafu wszerz
Procedure BFS(start)
node list nl;
nl.add(start);
while nl nie jest pusta do
pobierz pierwszy wierzchołek (v ) z listy nl i oznacz go jako
odwiedzony
for wszyscy sąsiedzi w wierzchołka v do
if w nie jest odwiedzony then
ustaw odległość w jako odległość v +1
dodaj sąsiada na listę
end if
end for
usuń v z listy
end while
Kolejność odwiedzania wierzchołków: A, B, C, E, D
Grafy
Algorytmy
Przeszukiwania i sortowania Notes
Najkrótsza ścieżka
Algorithm: Szukanie najkrótszej ścieżka od zadanego
wierzchołka do wszystkich pozostałych - bazujące na BFS
Procedure Shortest path(start)
node list nl;
nl.add(start);
while nl nie jest pusta do
pobierz pierwszy wierzchołek (v ) z listy nl i oznacz go jako
odwiedzony
for wszyscy sąsiedzi w wierzchołka v do
if w nie jest odwiedzony then
ustaw odległość w jako odległość v +1
dodaj sąsiada na listę
end if
end for
usuń v z listy
end while
Grafy
Algorytmy
Przeszukiwania i sortowania Notes
Sortowanie topologiczne
Jest to takie sortowanie wierzchołków grafu, że w posortowanej
strukturze zachowana jest kolejność wynikająca ze skierowania
krawędzi, tzn. wierzchołek, który dla dowolnej krawędzi jest
wierzchołkiem początkowym występuje w strukturze przed
wierzchołkiem końcowym.
Aby w grafie można było przeprowadzić sortowanie topologiczne,
musi on być grafem skierowanym, acyklicznym.
Grafy
Algorytmy
Przeszukiwania i sortowania Notes
Procedure ST on DFS(v )
zaznacz wierzchołek v jako odwiedzony
for wszyscy sąsiedzi w wierzchołka v do
if w nie jest odwiedzony then
wywołaj ST on DFS(w )
end if
dodaj v do stosu pomocniczego S
end for
Grafy
Algorytmy
MST Notes
Grafy
Algorytmy
MST Notes
Algorytm Kruskala
Algorytm Kruskala znajdowania MST jest algorytmem zachłannym
I Posortuj wszystkie krawędzie w rosnącym porządku wag
I Wybieraj po kolei krawędzie z tak posortowanej listy
I Krawędź może:
I łączyć wierzchołki nienależące do żadnego poddrzewa -
tworzymy nowe poddrzewo
I łączyć wierzchołki, z których tylko jeden należy do pewnego
poddrzewa - powiększamy to poddrzewo
I łączyć wierzchołki należące do dwóch różnych poddrzew -
scalamy je
I łączyć wierzchołki należące do tego samego poddrzewa - nie
bierzemy jej pod uwagę
I Kiedy wszystkie węzły należą do jednego drzewa, zatrzymaj
Grafy
Algorytmy
MST Notes
Algorytm Kruskala
AE: 1
AF: 2
BE: 2
DE: 3
AB: 4
BC: 5
FD: 6
EF: 7
CD: 8
Grafy
Algorytmy
MST Notes
Algorytm Kruskala
AE: 1
AF: 2
BE: 2
DE: 3
AB: 4
BC: 5
FD: 6
EF: 7
CD: 8
Grafy
Algorytmy
MST Notes
Algorytm Kruskala
AE: 1
AF: 2
BE: 2
DE: 3
AB: 4
BC: 5
FD: 6
EF: 7
CD: 8
Grafy
Algorytmy
MST Notes
Algorytm Kruskala
AE: 1
AF: 2
BE: 2
DE: 3
AB: 4
BC: 5
FD: 6
EF: 7
CD: 8
Grafy
Algorytmy
MST Notes
Algorytm Kruskala
AE: 1
AF: 2
BE: 2
DE: 3
AB: 4
BC: 5
FD: 6
EF: 7
CD: 8
Grafy
Algorytmy
MST Notes
Algorytm Kruskala
AE: 1
AF: 2
BE: 2
DE: 3
AB: 4
BC: 5
FD: 6
EF: 7
CD: 8
Grafy
Algorytmy
MST Notes
Algorytm Prima
Grafy
Algorytmy
MST Notes
Algorytm Prima
DE: 3
DF: 6
DC: 8
Grafy
Algorytmy
MST Notes
Algorytm Prima
EA: 1
EB: 2
DF: 6
EF: 7
DC: 8
Grafy
Algorytmy
MST Notes
Algorytm Prima
AF: 2
EB: 2
AB: 4
DF: 6
EF: 7
DC: 8
Grafy
Algorytmy
MST Notes
Algorytm Prima
EB: 2
AB: 4
DF: 6
EF: 7
DC: 8
Grafy
Algorytmy
MST Notes
Algorytm Prima
AB: 4
BC: 5
DF: 6
EF: 7
DC: 8
Grafy
Algorytmy
Odległości Notes
I Algorytm Dijkstry.
I Algorytm Forda-Bellmana
I Algorytm Floyda-Warshalla
I A* (A-star, A-gwiazdka)
Algorytm Dijkstry
Grafy
Algorytmy
Odległości Notes
Algorytm Dijkstry
Grafy
Algorytmy
Odległości Notes
Algorytm Dijkstry
Grafy
Algorytmy
Odległości Notes
Algorytm Dijkstry
Algorytm Dijkstry
Grafy
Algorytmy
Odległości Notes
Algorytm Dijkstry
Grafy
Algorytmy
Odległości Notes
Algorytm Forda-Bellmana
Grafy
Algorytmy
Odległości Notes
Algorytm Forda-Bellmana
A B C D E
A 0 4 5 ∞ 1
B ∞ 0 2 1 ∞
C ∞ ∞ 0 4 ∞
D ∞ 2 ∞ 0 3
E 6 ∞ 2 ∞ 0
Grafy
Algorytmy
Odległości Notes
Algorytm Forda-Bellmana
A B C D E
1 0 4 5 ∞ 1
Grafy
Algorytmy
Odległości Notes
Algorytm Floyda-Warshalla
I dij0 = wij
I dijk+1 = min(dijk , di,k+1
k k
+ di+1,k )
Grafy
Algorytmy
Odległości Notes
Algorytm Floyda-Warshalla
W algorytmie Floyda-Warshalla
wychodzimy z tablicy wag, jako
najmniejszych odległości w przybliżeniu
”zerowym”, po czym modyfikujemy ją
dla kolejnych wierzchołków w oparciu o
dane dla wierzchołków rozpatrywanych
wcześniej
Grafy
Algorytmy
Odległości Notes
Algorytm Floyda-Warshalla
A B C D E A B C D E
A 0 4 5 ∞ 1 A 0 4 5 5 1
B ∞ 0 2 1 ∞ B ∞ 0 2 1 ∞
C ∞ ∞ 0 4 ∞ C ∞ ∞ 0 4 ∞
D ∞ 2 ∞ 0 3 D ∞ 2 4 0 3
E 6 10 2 ∞ 0 A B C D E E 6 10 2 6 0
A 0 4 5 5 1
B ∞ 0 2 1 ∞
C ∞ ∞ 0 4 ∞
D ∞ 2 4 0 3
E 6 10 2 11 0
Grafy
Algorytmy
Odległości Notes
Algorytm Floyda-Warshalla
A B C D E A B C D E
A 0 4 5 5 1 A 0 4 3 5 1
B ∞ 0 2 1 4 B 10 0 2 1 4
C ∞ 6 0 4 7 C 13 6 0 4 7
D ∞ 2 4 0 3 D 9 2 4 0 3
E 6 8 2 6 0 E 6 8 2 6 0
Grafy
Algorytmy
Odległości Notes
Grafy
Algorytmy
Odległości Notes
Grafy
Algorytmy
Odległości Notes
Grafy
Algorytmy
Odległości Notes
A*, Przebieg
{O}
D P S E
g+h 366 372 514 487
g 82 203 96 168
h 284 169 418 319
{ O, D }
P F S E
g+h 372 390 514 487
g 203 221 96 168
h 169 169 418 319
Grafy
Algorytmy
Odległości Notes
A*, Przebieg
{ O, D, P }
Z(P) F S E
g+h 395 390 514 487
g 395 221 96 168
h 0 169 418 319
{ O, D, P, F }
Z(P) Z(F) S E
g+h 395 396 514 487
g 395 396 96 168
h 0 0 418 319
Grafy
Algorytmy
Odległości Notes
A*, podsumowanie
Zagadka. Co to za miasto?
Grafy
Algorytmy
Cykle Notes
Zagadnienie Eulera
Grafy
Algorytmy
Cykle Notes
Zagadnienie Eulera
Grafy
Algorytmy
Cykle Notes
Zagadnienie Eulera
Rozważmy graf
Zagadnienie Eulera
Stos:
A
Cykl:
-
Stos:
A,B
Cykl:
-
Grafy
Algorytmy
Cykle Notes
Zagadnienie Eulera
Stos:
A,B,C
Cykl:
-
Stos:
A,B,C,A
Cykl:
-
Grafy
Algorytmy
Cykle Notes
Zagadnienie Eulera
Stos:
A,B
Cykl:
A,C
Stos:
A,B,D
Cykl:
A,C
Grafy
Algorytmy
Cykle Notes
Zagadnienie Eulera
Stos:
A,B,D,E
Cykl:
A,C
Stos:
A,B,D,E,B
Cykl:
A,C
Grafy
Algorytmy
Cykle Notes
Zagadnienie Eulera
Ostatecznie
Stos:
-
Cykl:
A,C,B,E,D,B,A
Grafy
Algorytmy
Cykle Notes
Cykl Hamiltona
Grafy
Algorytmy
Cykle Notes
Notes
Algorytmy geometryczne
Notes
Tomasz M. Gwizdaªªa
Algorytmy geometryczne
Podstawy
Wspóªliniowo±¢ punktów
yC −yA yB −yA
xC −xA
= xB −xA
xA
yA 1
det(A, B, C ) = xB yB 1 = 0
xC yC 1
Algorytmy geometryczne
Podstawy
Lewo i prawo
oraz punkty
C (5, 1) i D(1, 5)
Algorytmy geometryczne
Podstawy
Lewo i prawo
1 1 1 4 4 1
det(A, B, C ) = 4 4 1 = −12 det(B, A, C ) = 1 1 1 = 12
5 1 1 5 1 1
1 1 1 4 4 1
det(A, B, D) = 4 4 1 = 12 det(B, A, D) = 1 1 1 = −12
1 5 1 1 5 1
Podstawy
Wspóªliniowo±¢ punktów
Algorytmy geometryczne
Podstawy
Przecinanie Notes
Algorytmy geometryczne
Podstawy
Przecinanie Notes
Algorytmy geometryczne
Podstawy
Przecinanie Notes
Aby dwa odcinki si¦ przecinaªy nie mo»e mie¢ miejsca taka sytuacja,
»e oba kra«ce jednego z odcinków s¡ po tej samej stronie drugiego.
Podstawy
Zawieranie Notes
Przynale»no±¢ do gury
Algorytmy geometryczne
Podstawy
Zawieranie Notes
Przynale»no±¢ do gury
Algorytmy geometryczne
Przecinanie i zamiatanie
Notes
Algorytmy geometryczne
Przecinanie i zamiatanie
Poj¦cia
Przecinanie i zamiatanie
Struktury
Wykorzystujemy dwie struktury danych:
▶ X, Harmonogram zdarze«
posortowany wzgl¦dem wspóªrz¦dnej x zbiór punktów
ko«cowych odcinków oraz punktów przeci¦¢ odcinków
aktywnych, które byªy s¡siadami w strukturze Y
▶ Y, Struktura stanu
zbiór zawieraj¡cy nazwy odcinków aktywnych
uporz¡dkowanych wzgl¦dem wspóªrz¦dnej y punktu
przeci¦cia z miotª¡, cz¦sto zbalansowane BST
Algorytmy geometryczne
Przecinanie i zamiatanie
Przebieg
▶ W strukturze X umie±¢ uporz¡dkowane ko«ce wszystkich
odcinków
Algorytmy geometryczne
Przecinanie i zamiatanie
Przykªad
Punkty przeci¦cia
A z B (1.5, 2.5)
B z C (2, 2)
Algorytmy geometryczne
Przecinanie i zamiatanie
Przykªad (1)
Y: Y: A(1)
Algorytmy geometryczne
Przecinanie i zamiatanie
Przykªad (2)
Algorytmy geometryczne
Przecinanie i zamiatanie
Przykªad (3)
X: 2A,e , 3C ,e , 4B,e
Algorytmy geometryczne
Przecinanie i zamiatanie
Przykªad (4)
X: 4B,e
X: 3C ,e , 4B,e
Y: B(2)
Y: B(2), C (2) itd.
Algorytmy geometryczne
Wypukªa otoczka
Cel
Procedura sortowania ze wzgl¦du na k¡t promienia wodz¡cego
poprowadzonego do danego punktu jest procedur¡
pomocnicz¡, wykorzystywan¡ w innych zagadnieniach.
Algorytmy geometryczne
Wypukªa otoczka
Algorytm
yi
di
, xi 0 ∧ yi 0
2 − yi , xi < 0 ∧ yi >
0
di
α= |yi |
2+
di
, xi ¬ 0 ∧ yi ¬ 0
|yi |
4 − di
, xi > 0 ∧ yi < 0
Algorytmy geometryczne
Wypukªa otoczka
Wypukªa otoczka
Wypukªa otoczk¡ (convex hull) pewnego zbioru punktów nazywamy najmniejszy
wielok¡t wypukªy, taki, »e wszystkie punkty nale»¡ce do zbioru, nale»¡ do tego
wielok¡ta.
Uwaga! Brzeg te» nale»y do wielok¡ta.
Algorytmy geometryczne
Wypukªa otoczka
Algorytm
Algorytm znajdowania wypukªej otoczki nosi nazw¦ algorytmu
Grahama.
▶ Wybieramy punkt, który na pewno b¦dzie nale»aª do wypukªej
otoczki.
Najcz¦±ciej jest to punkt o najmniejszej lub najwi¦kszej
warto±ci wybranej wspóªrz¦dnej.
Je±li takich punktów jest wi¦cej bierzemy pod uwag¦ drug¡
wspóªrz¦dn¡
Algorytmy geometryczne
Wypukªa otoczka
Punkt pocz¡tkowy
Punkt A na pewno b¦dzie nale»aª do wypukªej otoczki.
Wypukªa otoczka
Algorytmy geometryczne
Wypukªa otoczka
Powtarzamy
Podstaw¡ algorytmu jest sprawdzenie, czy kolejny punkt znajduje si¦ po prawej, czy po
lewej stronie odcinka ª¡cz¡cego dwa ostatnie punktu w strukturze WO. Wyró»niamy
dwie mo»liwo±ci:
▶ Punkt znajduje si¦ po lewej stronie odcinka lub jest z nim wspóªliniowy - kolejny
punkt dodajemy do struktury WO
▶ Punkt znajduje si¦ po prawej stronie odcinka - kolejny punkt zast¦puje ostatni
w strukturze WO (trzeba wtedy wykona¢ sprawdzenie tak»e dla poprzednich par
punktów na li±cie, ewentualnie usuwaj¡c wcze±niejsze punkty z WO)
WO: A, F, C
Algorytmy geometryczne
Wypukªa otoczka
WO: A, F, C, E
Algorytmy geometryczne
Wypukªa otoczka
WO: A, F, C, E
Algorytmy geometryczne
Wypukªa otoczka
WO: A, F, C, B
Algorytmy geometryczne
Wypukªa otoczka
WO: A, F, C, B, D
Algorytmy geometryczne
Wypukªa otoczka
WO: A, F, C, B, D, G
Algorytmy geometryczne
Drzewo BSP
Poj¦cie
depth sort
z-sort
Algorytmy geometryczne
Drzewo BSP
Cel
Naszym celem b¦dzie uporz¡dkowanie w odpowiedniej
kolejno±ci obiektów A-G, z punktu widzenia obserwatora O.
Warto zwróci¢ uwag¦, »e obiekty nie s¡ punktowe.
Algorytmy geometryczne
Drzewo BSP
Obserwacja
Poprowad¹my kilka przykªadowych prostych dziel¡cych przestrze«
zawieraj¡c¡ obiekty na podprzestrzenie. Strzaªka oznacza t¦
podprzestrze«, w której znajduje si¦ obserwator.
Algorytmy geometryczne
Drzewo BSP
Dalsze podziaªy
Wybierzmy jeden z przedstawionych podziaªów i dokonujmy
dalszych podziaªów podprzestrzeni, zawsze na dwie. Oznaczajmy
póªproste symbolami k[n]. Zaznaczajmy te» t¦ podprzestrze«, w
której znajduje si¦ obserwator.
Algorytmy geometryczne
Drzewo BSP
Drzewo BSP
Rysowanie
Kolejno±¢ rysowania musi by¢ taka, aby obiekty dalsze byªy
rysowane wcze±niej, czyli wybieramy zawsze najpierw prawe
poddrzewa i obiekty.
D, A, B, G, C, E, F
Algorytmy geometryczne
Drzewo BSP
Problemy
Algorytmy geometryczne
Drzewo BSP
Problemy
Zaªó»my, »e obserwator zmieniª
poªo»enie.
A B D F E C G
Notes
Notes
Wyszukiwanie wzorca
String matching
Tomasz M. Gwizdałła
T [s..s + m − 1] = P[0..m − 1]
T [s] = P[0], .., T [s + m − 1] = P[m − 1]
znalezieniu
wszystkich poprawnych przesunięć
wzorca w tekście
w [x ⇐⇒ ∃y ∈Σ∗ x = wy
w ]x ⇐⇒ ∃y ∈Σ∗ x = yw
Algorytm naiwny Notes
KA T ARAKTA KATARA K TA
A RAK A R AK
• Złożoność obliczeniowa
O(m ∗ n)
Zagadnienie Notes
Σ = {A, K , R, T }
KATARAKTA = ”214131241”
ARAK = ”1312”
Algorytm Notes
ts = m
i=1 T [i + s] ∗ 10
m−i
P
t0 = 2141
p= mi=1 P[i] ∗ 10
m−i
P
p = 1312
ts = p
Algorytm Notes
Algorytm Notes
t0 = 2141 t1 = 1413
1413 = (2141 − 2000) ∗ 10 + 3
• Rozmiar alfabetu
• Zakres liczby całkowitej
Problemy Notes
Problemy Notes
h = d m−1 mod q
Podsumowanie Notes
• Złożoność obliczeniowa
O(n)
Założenia Notes
T T 1 znak
T A
A teraz?
TTAT C 2 znaki
TAT A
TTAT C 1 znak
T A
TTAT C 1 znak
T
TTATCTATA G 2 znaki
TA T
2 1 1 0
4 1 2 2
2 1 1 0
1 0 1 0
5 2 2 2
3 0 2 2
Kryterium przesuwania Notes
max(1, j − Π[j] − 1)
Założenia Notes
Założenia Notes
GSS Notes
Założenia Notes
K AT A RAKT A
A R A K
pre BC [A] = 1, pre GS[4] = 1, przesunięcie=1
KA T A R AKT A
A R A K
pre BC [R] = 2, pre GS[4] = 1, przesunięcie=2
KA T A RAK T A
A RAK
A co z przesunięciem? Zawsze pre GS[0].
Podsumowanie Notes
Notes
Tomasz M. Gwizdałła
Drzewo działań
Rozważmy działanie:
(a + b − c) ∗ (d + e ∗ f )/(g + h)
Drzewo działań
Ostatecznie drzewo przyjmuje postać:
Kolejność: a+b-c*d+e*f/g+h
Wybrane algorytmy arytmetyczne
Odwrotna Notacja Polska
Działania arytmetyczne Notes
Kolejność: *-+abc/+d*ef+gh
Kolejność: ab+c-def*+gh+/*
In-order: a+b-c*d+e*f/g+h
Po pogrupowaniu: ((a+b)-c)*(d+e*f)/(g+h)
Typowa notacja infiksowa.
Pre-order: *-+abc/+d*ef+gh
Notacja Polska (Jan Łukasiewicz, 1920).
Kolejność: ab+c-def*+gh+*
Odwrotna Notacja Polska
Reverse Polish Notation (Burks, Warren, Wright, 1954)
Realizacja działania
Struktury danych
Algorytm
Przykład
(a+b)*(c+d)
Arytmetyka modularna
Celem jest wyznaczenie wartości wyrażenia:
x n mod p
P = r1 ∗ r2 mod p
L = (kp + r1 )(lp + r2 ) mod p =
(klp 2 + kpr2 + lpr1 + r1 r2 ) mod p = r1 ∗ r2 mod p
Wybrane algorytmy arytmetyczne
Potęgowanie modularne
Notes
Arytmetyka modularna
Qk−1 b 2i Qk−1 b 2i
x n mod p = i=0 x
i mod p =p i=0 (x i mod p),
Algorytm potęgowania
1110 = 10112
pi = reszta ri =
i bi 2i 7m 7m mod 23 2
pi−1 %23 pi ∗ ri−1
1
0 1 1 7 7 7 7
1 1 2 49 3 3 21
2 0 4 9 21
3 1 8 5764801 12 12 22
Notes