Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytmy i struktury danych
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Wyszukiwanie wzorca
Problem: wyszukiwanie wzorca (sªowa) w tek±cie.
Zbli»one problemy: wyszukiwanie specjalnych wzorców
w sekwencjach DNA, wyszukiwanie wzorców dwuwymiarowych. Dane:
sko«czony zbiór symboli Σ zwanyalfabetem, np.
Σ = {0, 1},
Σ = {a, b, c, . . . , z},
Σ = {a, b, c, . . . , z, 0, 1, . . . , 9},
tekst= tablica T [1..n] o elementach z Σ, wzorzec= tablica P[1..m] o elementach z Σ.
Problem: Znale¹¢ wszystkie wyst¡pienia wzorca P w tek±cie T . Wzorzec P wyst¦puje z przesuni¦ciems w tek±cie T , gdy 0 ≤ s ≤ n − m oraz T [s + 1..s + m] = P[1..m].
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Wyszukiwanie wzorca
Problem: wyszukiwanie wzorca (sªowa) w tek±cie. Zbli»one problemy: wyszukiwanie specjalnych wzorców
w sekwencjach DNA, wyszukiwanie wzorców dwuwymiarowych.
Dane:
sko«czony zbiór symboli Σ zwanyalfabetem, np.
Σ = {0, 1},
Σ = {a, b, c, . . . , z},
Σ = {a, b, c, . . . , z, 0, 1, . . . , 9},
tekst= tablica T [1..n] o elementach z Σ, wzorzec= tablica P[1..m] o elementach z Σ.
Problem: Znale¹¢ wszystkie wyst¡pienia wzorca P w tek±cie T . Wzorzec P wyst¦puje z przesuni¦ciems w tek±cie T , gdy 0 ≤ s ≤ n − m oraz T [s + 1..s + m] = P[1..m].
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Wyszukiwanie wzorca
Problem: wyszukiwanie wzorca (sªowa) w tek±cie. Zbli»one problemy: wyszukiwanie specjalnych wzorców
w sekwencjach DNA, wyszukiwanie wzorców dwuwymiarowych. Dane:
sko«czony zbiór symboli Σ zwanyalfabetem, np.
Σ = {0, 1},
Σ = {a, b, c, . . . , z},
Σ = {a, b, c, . . . , z, 0, 1, . . . , 9},
tekst= tablica T [1..n] o elementach z Σ, wzorzec= tablica P[1..m] o elementach z Σ.
Problem: Znale¹¢ wszystkie wyst¡pienia wzorca P w tek±cie T . Wzorzec P wyst¦puje z przesuni¦ciems w tek±cie T , gdy 0 ≤ s ≤ n − m oraz T [s + 1..s + m] = P[1..m].
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Wyszukiwanie wzorca
Problem: wyszukiwanie wzorca (sªowa) w tek±cie. Zbli»one problemy: wyszukiwanie specjalnych wzorców
w sekwencjach DNA, wyszukiwanie wzorców dwuwymiarowych. Dane:
sko«czony zbiór symboli Σ zwanyalfabetem, np.
Σ = {0, 1},
Σ = {a, b, c, . . . , z},
Σ = {a, b, c, . . . , z, 0, 1, . . . , 9},
tekst= tablica T [1..n] o elementach z Σ,
wzorzec= tablica P[1..m] o elementach z Σ.
Problem: Znale¹¢ wszystkie wyst¡pienia wzorca P w tek±cie T . Wzorzec P wyst¦puje z przesuni¦ciems w tek±cie T , gdy 0 ≤ s ≤ n − m oraz T [s + 1..s + m] = P[1..m].
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Wyszukiwanie wzorca
Problem: wyszukiwanie wzorca (sªowa) w tek±cie. Zbli»one problemy: wyszukiwanie specjalnych wzorców
w sekwencjach DNA, wyszukiwanie wzorców dwuwymiarowych. Dane:
sko«czony zbiór symboli Σ zwanyalfabetem, np.
Σ = {0, 1},
Σ = {a, b, c, . . . , z},
Σ = {a, b, c, . . . , z, 0, 1, . . . , 9},
tekst= tablica T [1..n] o elementach z Σ, wzorzec= tablica P[1..m] o elementach z Σ.
Problem: Znale¹¢ wszystkie wyst¡pienia wzorca P w tek±cie T . Wzorzec P wyst¦puje z przesuni¦ciems w tek±cie T , gdy 0 ≤ s ≤ n − m oraz T [s + 1..s + m] = P[1..m].
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Wyszukiwanie wzorca
Problem: wyszukiwanie wzorca (sªowa) w tek±cie. Zbli»one problemy: wyszukiwanie specjalnych wzorców
w sekwencjach DNA, wyszukiwanie wzorców dwuwymiarowych. Dane:
sko«czony zbiór symboli Σ zwanyalfabetem, np.
Σ = {0, 1},
Σ = {a, b, c, . . . , z},
Σ = {a, b, c, . . . , z, 0, 1, . . . , 9},
tekst= tablica T [1..n] o elementach z Σ, wzorzec= tablica P[1..m] o elementach z Σ.
Problem: Znale¹¢ wszystkie wyst¡pienia wzorca P w tek±cie T .
Wzorzec P wyst¦puje z przesuni¦ciems w tek±cie T , gdy 0 ≤ s ≤ n − m oraz T [s + 1..s + m] = P[1..m].
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Wyszukiwanie wzorca
Problem: wyszukiwanie wzorca (sªowa) w tek±cie. Zbli»one problemy: wyszukiwanie specjalnych wzorców
w sekwencjach DNA, wyszukiwanie wzorców dwuwymiarowych. Dane:
sko«czony zbiór symboli Σ zwanyalfabetem, np.
Σ = {0, 1},
Σ = {a, b, c, . . . , z},
Σ = {a, b, c, . . . , z, 0, 1, . . . , 9},
tekst= tablica T [1..n] o elementach z Σ, wzorzec= tablica P[1..m] o elementach z Σ.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Notacja i terminologia
Σ∗ = zbiór wszystkich tekstów (sªów) sko«czonej dªugo±ci utworzonych z symboli alfabetu Σ.
=sªowo pustedªugo±ci 0 ( ∈ Σ∗, dla ka»dego alfabetu Σ). |w| = dªugo±¢ sªowa w ∈ Σ∗.
Konkatenacja (zªo»enie) sªów w = a1. . .an i v = b1. . .bm, dla ai,bj ∈ Σ, n, m ≥ 1, to sªowo wv := a1. . .anb1. . .bm.
w := w := w, dla dowolnego w ∈ Σ∗.
Prekssªowa x = sªowo w takie, »e x = wy dla pewnego sªowa y ∈ Σ∗ (ozn. w @ x).
Suks sªowa x = sªowo w takie, »e x = yw dla pewnego sªowa y ∈ Σ∗ (ozn. w A x).
Relacje @ oraz A s¡ relacjami zwrotnymi, przechodnimi, ale nie symetrycznymi.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Notacja i terminologia
Σ∗ = zbiór wszystkich tekstów (sªów) sko«czonej dªugo±ci utworzonych z symboli alfabetu Σ.
=sªowo pustedªugo±ci 0 ( ∈ Σ∗, dla ka»dego alfabetu Σ).
|w| = dªugo±¢ sªowa w ∈ Σ∗.
Konkatenacja (zªo»enie) sªów w = a1. . .an i v = b1. . .bm, dla ai,bj ∈ Σ, n, m ≥ 1, to sªowo wv := a1. . .anb1. . .bm.
w := w := w, dla dowolnego w ∈ Σ∗.
Prekssªowa x = sªowo w takie, »e x = wy dla pewnego sªowa y ∈ Σ∗ (ozn. w @ x).
Suks sªowa x = sªowo w takie, »e x = yw dla pewnego sªowa y ∈ Σ∗ (ozn. w A x).
Relacje @ oraz A s¡ relacjami zwrotnymi, przechodnimi, ale nie symetrycznymi.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Notacja i terminologia
Σ∗ = zbiór wszystkich tekstów (sªów) sko«czonej dªugo±ci utworzonych z symboli alfabetu Σ.
=sªowo pustedªugo±ci 0 ( ∈ Σ∗, dla ka»dego alfabetu Σ). |w| = dªugo±¢ sªowa w ∈ Σ∗.
Konkatenacja (zªo»enie) sªów w = a1. . .an i v = b1. . .bm, dla ai,bj ∈ Σ, n, m ≥ 1, to sªowo wv := a1. . .anb1. . .bm.
w := w := w, dla dowolnego w ∈ Σ∗.
Prekssªowa x = sªowo w takie, »e x = wy dla pewnego sªowa y ∈ Σ∗ (ozn. w @ x).
Suks sªowa x = sªowo w takie, »e x = yw dla pewnego sªowa y ∈ Σ∗ (ozn. w A x).
Relacje @ oraz A s¡ relacjami zwrotnymi, przechodnimi, ale nie symetrycznymi.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Notacja i terminologia
Σ∗ = zbiór wszystkich tekstów (sªów) sko«czonej dªugo±ci utworzonych z symboli alfabetu Σ.
=sªowo pustedªugo±ci 0 ( ∈ Σ∗, dla ka»dego alfabetu Σ). |w| = dªugo±¢ sªowa w ∈ Σ∗.
Konkatenacja(zªo»enie) sªów w = a1. . .an i v = b1. . .bm, dla ai,bj ∈ Σ, n, m ≥ 1, to sªowo wv := a1. . .anb1. . .bm.
w := w := w, dla dowolnego w ∈ Σ∗.
Prekssªowa x = sªowo w takie, »e x = wy dla pewnego sªowa y ∈ Σ∗ (ozn. w @ x).
Suks sªowa x = sªowo w takie, »e x = yw dla pewnego sªowa y ∈ Σ∗ (ozn. w A x).
Relacje @ oraz A s¡ relacjami zwrotnymi, przechodnimi, ale nie symetrycznymi.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Notacja i terminologia
Σ∗ = zbiór wszystkich tekstów (sªów) sko«czonej dªugo±ci utworzonych z symboli alfabetu Σ.
=sªowo pustedªugo±ci 0 ( ∈ Σ∗, dla ka»dego alfabetu Σ). |w| = dªugo±¢ sªowa w ∈ Σ∗.
Konkatenacja(zªo»enie) sªów w = a1. . .an i v = b1. . .bm, dla ai,bj ∈ Σ, n, m ≥ 1, to sªowo wv := a1. . .anb1. . .bm.
w := w := w, dla dowolnego w ∈ Σ∗.
Prekssªowa x = sªowo w takie, »e x = wy dla pewnego sªowa y ∈ Σ∗ (ozn. w @ x).
Suks sªowa x = sªowo w takie, »e x = yw dla pewnego sªowa y ∈ Σ∗ (ozn. w A x).
Relacje @ oraz A s¡ relacjami zwrotnymi, przechodnimi, ale nie symetrycznymi.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Notacja i terminologia
Σ∗ = zbiór wszystkich tekstów (sªów) sko«czonej dªugo±ci utworzonych z symboli alfabetu Σ.
=sªowo pustedªugo±ci 0 ( ∈ Σ∗, dla ka»dego alfabetu Σ). |w| = dªugo±¢ sªowa w ∈ Σ∗.
Konkatenacja(zªo»enie) sªów w = a1. . .an i v = b1. . .bm, dla ai,bj ∈ Σ, n, m ≥ 1, to sªowo wv := a1. . .anb1. . .bm.
w := w := w, dla dowolnego w ∈ Σ∗.
Prekssªowa x = sªowo w takie, »e x = wy dla pewnego sªowa y ∈ Σ∗ (ozn. w @ x).
Suks sªowa x = sªowo w takie, »e x = yw dla pewnego sªowa y ∈ Σ∗ (ozn. w A x).
Relacje @ oraz A s¡ relacjami zwrotnymi, przechodnimi, ale nie symetrycznymi.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Notacja i terminologia
Σ∗ = zbiór wszystkich tekstów (sªów) sko«czonej dªugo±ci utworzonych z symboli alfabetu Σ.
=sªowo pustedªugo±ci 0 ( ∈ Σ∗, dla ka»dego alfabetu Σ). |w| = dªugo±¢ sªowa w ∈ Σ∗.
Konkatenacja(zªo»enie) sªów w = a1. . .an i v = b1. . .bm, dla ai,bj ∈ Σ, n, m ≥ 1, to sªowo wv := a1. . .anb1. . .bm.
w := w := w, dla dowolnego w ∈ Σ∗.
Prekssªowa x = sªowo w takie, »e x = wy dla pewnego sªowa y ∈ Σ∗ (ozn. w @ x).
Suks sªowa x = sªowo w takie, »e x = yw dla pewnego sªowa y ∈ Σ∗ (ozn. w A x).
Relacje @ oraz A s¡ relacjami zwrotnymi, przechodnimi, ale nie symetrycznymi.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Notacja i terminologia
Σ∗ = zbiór wszystkich tekstów (sªów) sko«czonej dªugo±ci utworzonych z symboli alfabetu Σ.
=sªowo pustedªugo±ci 0 ( ∈ Σ∗, dla ka»dego alfabetu Σ). |w| = dªugo±¢ sªowa w ∈ Σ∗.
Konkatenacja(zªo»enie) sªów w = a1. . .an i v = b1. . .bm, dla ai,bj ∈ Σ, n, m ≥ 1, to sªowo wv := a1. . .anb1. . .bm.
w := w := w, dla dowolnego w ∈ Σ∗.
Prekssªowa x = sªowo w takie, »e x = wy dla pewnego sªowa y ∈ Σ∗ (ozn. w @ x).
Suks sªowa x = sªowo w takie, »e x = yw dla pewnego sªowa y ∈ Σ∗ (ozn. w A x).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm naiwny
Sprawdza, czy T [s + 1..s + m] = P[1..m] dla ka»dej z n − m + 1 mo»liwych warto±ci s. NaiveStringMatcher(T, P) 1 begin 2 n := length(T); 3 m := length(P); 4 fors := 0ton−mdo 5 if T [s + 1..s + m] = P[1..m] then
6 wypisz 'Wzorzec wyst¦puje z przesuni¦ciem' s;
7 end;
Test w linii 5 zawiera wewn¦trzn¡ p¦tl¦ przebiegaj¡c¡ po kolejnych symbolach a» do chwili gdy sprawdzimy caªy wzorzec lub
znajdziemy niezgodno±¢.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm naiwny
Sprawdza, czy T [s + 1..s + m] = P[1..m] dla ka»dej z n − m + 1 mo»liwych warto±ci s. NaiveStringMatcher(T, P) 1 begin 2 n := length(T); 3 m := length(P); 4 fors := 0ton−mdo 5 if T [s + 1..s + m] = P[1..m] then
6 wypisz 'Wzorzec wyst¦puje z przesuni¦ciem' s;
7 end;
Test w linii 5 zawiera wewn¦trzn¡ p¦tl¦ przebiegaj¡c¡ po kolejnych symbolach a» do chwili gdy sprawdzimy caªy wzorzec lub
znajdziemy niezgodno±¢.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm naiwny
Sprawdza, czy T [s + 1..s + m] = P[1..m] dla ka»dej z n − m + 1 mo»liwych warto±ci s. NaiveStringMatcher(T, P) 1 begin 2 n := length(T); 3 m := length(P); 4 fors := 0ton−mdo 5 if T [s + 1..s + m] = P[1..m] then
6 wypisz 'Wzorzec wyst¦puje z przesuni¦ciem' s;
7 end;
Test w linii 5 zawiera wewn¦trzn¡ p¦tl¦ przebiegaj¡c¡ po kolejnych symbolach a» do chwili gdy sprawdzimy caªy wzorzec lub
znajdziemy niezgodno±¢.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm naiwny
Sprawdza, czy T [s + 1..s + m] = P[1..m] dla ka»dej z n − m + 1 mo»liwych warto±ci s. NaiveStringMatcher(T, P) 1 begin 2 n := length(T); 3 m := length(P); 4 fors := 0ton−mdo 5 if T [s + 1..s + m] = P[1..m] then
6 wypisz 'Wzorzec wyst¦puje z przesuni¦ciem' s;
7 end;
Test w linii 5 zawiera wewn¦trzn¡ p¦tl¦ przebiegaj¡c¡ po kolejnych symbolach a» do chwili gdy sprawdzimy caªy wzorzec lub
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Pesymistyczny czas dziaªania Θ((n − m + 1)m), ale czas ±redni jest znacznie lepszy.
Wykorzystuje elementarn¡ teori¦ liczb. Pomysª: interpretowa¢
alfabet Σ jako zbiór cyfr systemu o podstawie d = |Σ|, tekst dªugo±ci n jako n-cyfrow¡ liczb¦ w tym systemie.
Wówczas tekst T i wzorzec P s¡ liczbami, które mo»na porównywa¢ u»ywaj¡c teorii liczb.
Przykªad: Σ = {a, b, c}, d = 3; a ↔ 0, b ↔ 1, c ↔ 2. Jak¡ liczb¡ w systemie dziesi¦tnym jest tekst T = baba? baba3=10103
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Pesymistyczny czas dziaªania Θ((n − m + 1)m), ale czas ±redni jest znacznie lepszy.
Wykorzystuje elementarn¡ teori¦ liczb.
Pomysª: interpretowa¢
alfabet Σ jako zbiór cyfr systemu o podstawie d = |Σ|, tekst dªugo±ci n jako n-cyfrow¡ liczb¦ w tym systemie.
Wówczas tekst T i wzorzec P s¡ liczbami, które mo»na porównywa¢ u»ywaj¡c teorii liczb.
Przykªad: Σ = {a, b, c}, d = 3; a ↔ 0, b ↔ 1, c ↔ 2. Jak¡ liczb¡ w systemie dziesi¦tnym jest tekst T = baba? baba3=10103
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Pesymistyczny czas dziaªania Θ((n − m + 1)m), ale czas ±redni jest znacznie lepszy.
Wykorzystuje elementarn¡ teori¦ liczb. Pomysª: interpretowa¢
alfabet Σ jako zbiór cyfr systemu o podstawie d = |Σ|,
tekst dªugo±ci n jako n-cyfrow¡ liczb¦ w tym systemie.
Wówczas tekst T i wzorzec P s¡ liczbami, które mo»na porównywa¢ u»ywaj¡c teorii liczb.
Przykªad: Σ = {a, b, c}, d = 3; a ↔ 0, b ↔ 1, c ↔ 2. Jak¡ liczb¡ w systemie dziesi¦tnym jest tekst T = baba? baba3=10103
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Pesymistyczny czas dziaªania Θ((n − m + 1)m), ale czas ±redni jest znacznie lepszy.
Wykorzystuje elementarn¡ teori¦ liczb. Pomysª: interpretowa¢
alfabet Σ jako zbiór cyfr systemu o podstawie d = |Σ|, tekst dªugo±ci n jako n-cyfrow¡ liczb¦ w tym systemie.
Wówczas tekst T i wzorzec P s¡ liczbami, które mo»na porównywa¢ u»ywaj¡c teorii liczb.
Przykªad: Σ = {a, b, c}, d = 3; a ↔ 0, b ↔ 1, c ↔ 2. Jak¡ liczb¡ w systemie dziesi¦tnym jest tekst T = baba? baba3=10103
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Pesymistyczny czas dziaªania Θ((n − m + 1)m), ale czas ±redni jest znacznie lepszy.
Wykorzystuje elementarn¡ teori¦ liczb. Pomysª: interpretowa¢
alfabet Σ jako zbiór cyfr systemu o podstawie d = |Σ|, tekst dªugo±ci n jako n-cyfrow¡ liczb¦ w tym systemie.
Wówczas tekst T i wzorzec P s¡ liczbami, które mo»na porównywa¢ u»ywaj¡c teorii liczb.
Przykªad: Σ = {a, b, c}, d = 3; a ↔ 0, b ↔ 1, c ↔ 2. Jak¡ liczb¡ w systemie dziesi¦tnym jest tekst T = baba? baba3=10103
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Pesymistyczny czas dziaªania Θ((n − m + 1)m), ale czas ±redni jest znacznie lepszy.
Wykorzystuje elementarn¡ teori¦ liczb. Pomysª: interpretowa¢
alfabet Σ jako zbiór cyfr systemu o podstawie d = |Σ|, tekst dªugo±ci n jako n-cyfrow¡ liczb¦ w tym systemie.
Wówczas tekst T i wzorzec P s¡ liczbami, które mo»na porównywa¢ u»ywaj¡c teorii liczb.
Przykªad: Σ = {a, b, c}, d = 3; a ↔ 0, b ↔ 1, c ↔ 2.
Jak¡ liczb¡ w systemie dziesi¦tnym jest tekst T = baba? baba3=10103
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Pesymistyczny czas dziaªania Θ((n − m + 1)m), ale czas ±redni jest znacznie lepszy.
Wykorzystuje elementarn¡ teori¦ liczb. Pomysª: interpretowa¢
alfabet Σ jako zbiór cyfr systemu o podstawie d = |Σ|, tekst dªugo±ci n jako n-cyfrow¡ liczb¦ w tym systemie.
Wówczas tekst T i wzorzec P s¡ liczbami, które mo»na porównywa¢ u»ywaj¡c teorii liczb.
Przykªad: Σ = {a, b, c}, d = 3; a ↔ 0, b ↔ 1, c ↔ 2. Jak¡ liczb¡ w systemie dziesi¦tnym jest tekst T = baba?
baba3=10103
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Pesymistyczny czas dziaªania Θ((n − m + 1)m), ale czas ±redni jest znacznie lepszy.
Wykorzystuje elementarn¡ teori¦ liczb. Pomysª: interpretowa¢
alfabet Σ jako zbiór cyfr systemu o podstawie d = |Σ|, tekst dªugo±ci n jako n-cyfrow¡ liczb¦ w tym systemie.
Wówczas tekst T i wzorzec P s¡ liczbami, które mo»na porównywa¢ u»ywaj¡c teorii liczb.
Przykªad: Σ = {a, b, c}, d = 3; a ↔ 0, b ↔ 1, c ↔ 2. Jak¡ liczb¡ w systemie dziesi¦tnym jest tekst T = baba?
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Pesymistyczny czas dziaªania Θ((n − m + 1)m), ale czas ±redni jest znacznie lepszy.
Wykorzystuje elementarn¡ teori¦ liczb. Pomysª: interpretowa¢
alfabet Σ jako zbiór cyfr systemu o podstawie d = |Σ|, tekst dªugo±ci n jako n-cyfrow¡ liczb¦ w tym systemie.
Wówczas tekst T i wzorzec P s¡ liczbami, które mo»na porównywa¢ u»ywaj¡c teorii liczb.
Przykªad: Σ = {a, b, c}, d = 3; a ↔ 0, b ↔ 1, c ↔ 2. Jak¡ liczb¡ w systemie dziesi¦tnym jest tekst T = baba? baba3=10103 = (1 · 33+0 · 32+1 · 31+0 · 30)10=3010.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Dla uproszczenia: Σ = {0, 1, 2, . . . , 9}, d = 10.
Ustalmy tekst T [1..n] i wzorzec P[1..m]. Oznaczenia:
p = warto±¢ dziesi¦tna P,
ts = warto±¢ dziesi¦tna podsªowa T [s + 1..s + m], dla
s = 0, 1, . . . , n − m.
Wówczas P wyst¦puje z przesuni¦ciem s w T (tj. T [s + 1..s + m] = P[1..m]) ⇔ ts =p.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Dla uproszczenia: Σ = {0, 1, 2, . . . , 9}, d = 10. Ustalmy tekst T [1..n] i wzorzec P[1..m]. Oznaczenia:
p = warto±¢ dziesi¦tna P,
ts = warto±¢ dziesi¦tna podsªowa T [s + 1..s + m], dla
s = 0, 1, . . . , n − m.
Wówczas P wyst¦puje z przesuni¦ciem s w T (tj. T [s + 1..s + m] = P[1..m]) ⇔ ts =p.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Dla uproszczenia: Σ = {0, 1, 2, . . . , 9}, d = 10. Ustalmy tekst T [1..n] i wzorzec P[1..m]. Oznaczenia:
p = warto±¢ dziesi¦tna P,
ts = warto±¢ dziesi¦tna podsªowa T [s + 1..s + m], dla
s = 0, 1, . . . , n − m.
Wówczas P wyst¦puje z przesuni¦ciem s w T (tj. T [s + 1..s + m] = P[1..m]) ⇔ ts =p.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Zaªó»my, »e:
1 obliczymy p w czasie O(m),
2 obliczymy wszystkie warto±ci ts, dla s = 0, 1, . . . , n − m, w sumie w czasie O(n).
Wówczas wyznaczymy wszystkie wyst¡pienia wzorca P w T porównuj¡c p z kolejnymi warto±ciami ts = czas O(n).
⇒ Zªo»ono±¢: O(m + n + n) = O(m + n). Jak zrealizowa¢ 1 i 2 ?
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Zaªó»my, »e:
1 obliczymy p w czasie O(m),
2 obliczymy wszystkie warto±ci ts, dla s = 0, 1, . . . , n − m, w sumie w czasie O(n).
Wówczas wyznaczymy wszystkie wyst¡pienia wzorca P w T porównuj¡c p z kolejnymi warto±ciami ts = czas O(n).
⇒ Zªo»ono±¢: O(m + n + n) = O(m + n). Jak zrealizowa¢ 1 i 2 ?
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Zaªó»my, »e:
1 obliczymy p w czasie O(m),
2 obliczymy wszystkie warto±ci ts, dla s = 0, 1, . . . , n − m, w sumie w czasie O(n).
Wówczas wyznaczymy wszystkie wyst¡pienia wzorca P w T porównuj¡c p z kolejnymi warto±ciami ts = czas O(n).
⇒ Zªo»ono±¢: O(m + n + n) = O(m + n). Jak zrealizowa¢ 1 i 2 ?
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Zaªó»my, »e:
1 obliczymy p w czasie O(m),
2 obliczymy wszystkie warto±ci ts, dla s = 0, 1, . . . , n − m, w sumie w czasie O(n).
Wówczas wyznaczymy wszystkie wyst¡pienia wzorca P w T porównuj¡c p z kolejnymi warto±ciami ts = czas O(n).
⇒ Zªo»ono±¢: O(m + n + n) = O(m + n). Jak zrealizowa¢ 1 i 2 ?
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Zaªó»my, »e:
1 obliczymy p w czasie O(m),
2 obliczymy wszystkie warto±ci ts, dla s = 0, 1, . . . , n − m, w sumie w czasie O(n).
Wówczas wyznaczymy wszystkie wyst¡pienia wzorca P w T porównuj¡c p z kolejnymi warto±ciami ts = czas O(n).
⇒ Zªo»ono±¢: O(m + n + n) = O(m + n).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Zaªó»my, »e:
1 obliczymy p w czasie O(m),
2 obliczymy wszystkie warto±ci ts, dla s = 0, 1, . . . , n − m, w sumie w czasie O(n).
Wówczas wyznaczymy wszystkie wyst¡pienia wzorca P w T porównuj¡c p z kolejnymi warto±ciami ts = czas O(n).
⇒ Zªo»ono±¢: O(m + n + n) = O(m + n). Jak zrealizowa¢ 1 i 2 ?
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ad 1. Obliczenie p.
p = p[1] · 10m−1+ . . . +p[m − 2] · 102+p[m − 1] · 101+p[m] · 100 Jest to warto±¢ wielomianu
p[1] · xm−1+ . . . +p[m − 2] · x2+p[m − 1] · x1+p[m] · x0
w punkcie 10.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ad 1. Obliczenie p.
p = p[1] · 10m−1+ . . . +p[m − 2] · 102+p[m − 1] · 101+p[m] · 100
Jest to warto±¢ wielomianu
p[1] · xm−1+ . . . +p[m − 2] · x2+p[m − 1] · x1+p[m] · x0
w punkcie 10.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ad 1. Obliczenie p.
p = p[1] · 10m−1+ . . . +p[m − 2] · 102+p[m − 1] · 101+p[m] · 100 Jest to warto±¢ wielomianu
p[1] · xm−1+ . . . +p[m − 2] · x2+p[m − 1] · x1+p[m] · x0
w punkcie 10.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ad 1. Obliczenie p.
p = p[1] · 10m−1+ . . . +p[m − 2] · 102+p[m − 1] · 101+p[m] · 100 Jest to warto±¢ wielomianu
p[1] · xm−1+ . . . +p[m − 2] · x2+p[m − 1] · x1+p[m] · x0
w punkcie 10.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ad 2. Obliczenie wszystkich warto±ci ts, dla s = 0, 1, . . . , n − m.
ts to równie» warto±ci wielomianów stopnia m − 1 w punkcie 10.
Stosuj¡c do ka»dej ts metod¦ Hornera obliczyliby±my wszystkie
w czasie O(nm). Mo»na lepiej:
obliczamy t0 w czasie O(m),
zauwa»my, »e ts+1=10(ts −10m−1T [s + 1]) + T [s + m + 1],
⇒ wyznaczenie ts+1, maj¡c ts zajmuje czas O(1), ⇒ wyliczenie t1,t2, . . . ,tn−m zajmuje czas O(n − m), ⇒ wyliczenie wszystkich t0,t1,t2, . . . ,tn−mzajmuje O(m + n − m) = O(n).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ad 2. Obliczenie wszystkich warto±ci ts, dla s = 0, 1, . . . , n − m.
ts to równie» warto±ci wielomianów stopnia m − 1 w punkcie 10.
Stosuj¡c do ka»dej ts metod¦ Hornera obliczyliby±my wszystkie
w czasie O(nm). Mo»na lepiej:
obliczamy t0 w czasie O(m),
zauwa»my, »e ts+1=10(ts −10m−1T [s + 1]) + T [s + m + 1],
⇒ wyznaczenie ts+1, maj¡c ts zajmuje czas O(1), ⇒ wyliczenie t1,t2, . . . ,tn−m zajmuje czas O(n − m), ⇒ wyliczenie wszystkich t0,t1,t2, . . . ,tn−mzajmuje O(m + n − m) = O(n).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ad 2. Obliczenie wszystkich warto±ci ts, dla s = 0, 1, . . . , n − m.
ts to równie» warto±ci wielomianów stopnia m − 1 w punkcie 10.
Stosuj¡c do ka»dej ts metod¦ Hornera obliczyliby±my wszystkie
w czasie O(nm).
Mo»na lepiej:
obliczamy t0 w czasie O(m),
zauwa»my, »e ts+1=10(ts −10m−1T [s + 1]) + T [s + m + 1],
⇒ wyznaczenie ts+1, maj¡c ts zajmuje czas O(1), ⇒ wyliczenie t1,t2, . . . ,tn−m zajmuje czas O(n − m), ⇒ wyliczenie wszystkich t0,t1,t2, . . . ,tn−mzajmuje O(m + n − m) = O(n).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ad 2. Obliczenie wszystkich warto±ci ts, dla s = 0, 1, . . . , n − m.
ts to równie» warto±ci wielomianów stopnia m − 1 w punkcie 10.
Stosuj¡c do ka»dej ts metod¦ Hornera obliczyliby±my wszystkie
w czasie O(nm). Mo»na lepiej:
obliczamy t0 w czasie O(m),
zauwa»my, »e ts+1=10(ts −10m−1T [s + 1]) + T [s + m + 1],
⇒ wyznaczenie ts+1, maj¡c ts zajmuje czas O(1), ⇒ wyliczenie t1,t2, . . . ,tn−m zajmuje czas O(n − m), ⇒ wyliczenie wszystkich t0,t1,t2, . . . ,tn−mzajmuje O(m + n − m) = O(n).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ad 2. Obliczenie wszystkich warto±ci ts, dla s = 0, 1, . . . , n − m.
ts to równie» warto±ci wielomianów stopnia m − 1 w punkcie 10.
Stosuj¡c do ka»dej ts metod¦ Hornera obliczyliby±my wszystkie
w czasie O(nm). Mo»na lepiej:
obliczamy t0 w czasie O(m),
zauwa»my, »e ts+1=10(ts −10m−1T [s + 1]) + T [s + m + 1],
⇒ wyznaczenie ts+1, maj¡c ts zajmuje czas O(1), ⇒ wyliczenie t1,t2, . . . ,tn−m zajmuje czas O(n − m), ⇒ wyliczenie wszystkich t0,t1,t2, . . . ,tn−mzajmuje O(m + n − m) = O(n).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ad 2. Obliczenie wszystkich warto±ci ts, dla s = 0, 1, . . . , n − m.
ts to równie» warto±ci wielomianów stopnia m − 1 w punkcie 10.
Stosuj¡c do ka»dej ts metod¦ Hornera obliczyliby±my wszystkie
w czasie O(nm). Mo»na lepiej:
obliczamy t0 w czasie O(m),
zauwa»my, »e ts+1=10(ts −10m−1T [s + 1]) + T [s + m + 1],
⇒ wyznaczenie ts+1, maj¡c ts zajmuje czas O(1), ⇒ wyliczenie t1,t2, . . . ,tn−m zajmuje czas O(n − m), ⇒ wyliczenie wszystkich t0,t1,t2, . . . ,tn−mzajmuje O(m + n − m) = O(n).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ad 2. Obliczenie wszystkich warto±ci ts, dla s = 0, 1, . . . , n − m.
ts to równie» warto±ci wielomianów stopnia m − 1 w punkcie 10.
Stosuj¡c do ka»dej ts metod¦ Hornera obliczyliby±my wszystkie
w czasie O(nm). Mo»na lepiej:
obliczamy t0 w czasie O(m),
zauwa»my, »e ts+1=10(ts −10m−1T [s + 1]) + T [s + m + 1],
⇒ wyznaczenie ts+1, maj¡c ts zajmuje czas O(1),
⇒ wyliczenie t1,t2, . . . ,tn−m zajmuje czas O(n − m), ⇒ wyliczenie wszystkich t0,t1,t2, . . . ,tn−mzajmuje O(m + n − m) = O(n).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ad 2. Obliczenie wszystkich warto±ci ts, dla s = 0, 1, . . . , n − m.
ts to równie» warto±ci wielomianów stopnia m − 1 w punkcie 10.
Stosuj¡c do ka»dej ts metod¦ Hornera obliczyliby±my wszystkie
w czasie O(nm). Mo»na lepiej:
obliczamy t0 w czasie O(m),
zauwa»my, »e ts+1=10(ts −10m−1T [s + 1]) + T [s + m + 1],
⇒ wyznaczenie ts+1, maj¡c ts zajmuje czas O(1), ⇒ wyliczenie t1,t2, . . . ,tn−m zajmuje czas O(n − m),
⇒ wyliczenie wszystkich t0,t1,t2, . . . ,tn−mzajmuje O(m + n − m) = O(n).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ad 2. Obliczenie wszystkich warto±ci ts, dla s = 0, 1, . . . , n − m.
ts to równie» warto±ci wielomianów stopnia m − 1 w punkcie 10.
Stosuj¡c do ka»dej ts metod¦ Hornera obliczyliby±my wszystkie
w czasie O(nm). Mo»na lepiej:
obliczamy t0 w czasie O(m),
zauwa»my, »e ts+1=10(ts −10m−1T [s + 1]) + T [s + m + 1],
⇒ wyznaczenie ts+1, maj¡c ts zajmuje czas O(1), ⇒ wyliczenie t1,t2, . . . ,tn−m zajmuje czas O(n − m), ⇒ wyliczenie wszystkich t0,t1,t2, . . . ,tn−m zajmuje O(m + n − m) = O(n).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Na podstawie poprzednich rozwa»a« mamy algorytm szukania wzorca o zªo»ono±ci O(n + m).
Ale:
operujemy tu na potencjalnie bardzo du»ych liczbach! Zaªo»enie, »e ka»da operacja arytmetyczna zajmuje czas staªy jest zbyt du»ym uproszczeniem, faktyczna zªo»ono±¢ jest du»o wi¦ksza ni» O(n + m).
Pomysª: arytmetyka modulo.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Na podstawie poprzednich rozwa»a« mamy algorytm szukania wzorca o zªo»ono±ci O(n + m).
Ale: operujemy tu na potencjalnie bardzo du»ych liczbach!
Zaªo»enie, »e ka»da operacja arytmetyczna zajmuje czas staªy jest zbyt du»ym uproszczeniem, faktyczna zªo»ono±¢ jest du»o wi¦ksza ni» O(n + m).
Pomysª: arytmetyka modulo.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Na podstawie poprzednich rozwa»a« mamy algorytm szukania wzorca o zªo»ono±ci O(n + m).
Ale: operujemy tu na potencjalnie bardzo du»ych liczbach! Zaªo»enie, »e ka»da operacja arytmetyczna zajmuje czas staªy jest zbyt du»ym uproszczeniem, faktyczna zªo»ono±¢ jest du»o wi¦ksza ni» O(n + m).
Pomysª: arytmetyka modulo.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Na podstawie poprzednich rozwa»a« mamy algorytm szukania wzorca o zªo»ono±ci O(n + m).
Ale: operujemy tu na potencjalnie bardzo du»ych liczbach! Zaªo»enie, »e ka»da operacja arytmetyczna zajmuje czas staªy jest zbyt du»ym uproszczeniem, faktyczna zªo»ono±¢ jest du»o wi¦ksza ni» O(n + m).
Pomysª: arytmetyka modulo.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Na podstawie poprzednich rozwa»a« mamy algorytm szukania wzorca o zªo»ono±ci O(n + m).
Ale: operujemy tu na potencjalnie bardzo du»ych liczbach! Zaªo»enie, »e ka»da operacja arytmetyczna zajmuje czas staªy jest zbyt du»ym uproszczeniem, faktyczna zªo»ono±¢ jest du»o wi¦ksza ni» O(n + m).
Pomysª: arytmetyka modulo.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Jako q dobieramy tak¡ liczb¦ pierwsz¡, »e 10q (ogólniej dq) mie±ci si¦ w sªowie komputera.
Stosujemy wcze±niejsze wzory w wersji modulo q:
ts+1= (10(ts−hT [s + 1]) + T [s + m + 1]) mod q,
gdzie h = 10m−1 mod q.
Teraz faktycznie mo»na obliczy¢ warto±ci p, t0,t1, . . . ,tn−m
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Jako q dobieramy tak¡ liczb¦ pierwsz¡, »e 10q (ogólniej dq) mie±ci si¦ w sªowie komputera.
Stosujemy wcze±niejsze wzory w wersji modulo q:
ts+1= (10(ts−hT [s + 1]) + T [s + m + 1]) mod q,
gdzie h = 10m−1 mod q.
Teraz faktycznie mo»na obliczy¢ warto±ci p, t0,t1, . . . ,tn−m
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Jako q dobieramy tak¡ liczb¦ pierwsz¡, »e 10q (ogólniej dq) mie±ci si¦ w sªowie komputera.
Stosujemy wcze±niejsze wzory w wersji modulo q:
ts+1= (10(ts−hT [s + 1]) + T [s + m + 1]) mod q,
gdzie h = 10m−1 mod q.
Teraz faktycznie mo»na obliczy¢ warto±ci p, t0,t1, . . . ,tn−m
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ale: problem z porównywaniem liczb.
ts 6=p (mod q) ⇒ ts 6=p, czyli OK.
ale nieprawda, »e ts =p (mod q) ⇒ ts =p.
Zatem ka»de s takie, »e ts =p (mod q) musi by¢ dodatkowo
zwerykowane przez bezpo±rednie sprawdzenie warunku T [s + 1..s + m] = P[1..m].
Sprawia to, »e w pesymistycznych przypadkach (gdy wzorzec wyst¦puje cz¦sto) algorytm Rabina-Karpa dziaªa w czasie takim jak algorytm naiwny Θ((n − m + 1)m).
W przypadkach optymistycznych, gdy wzorzec wyst¦puje O(1) razy, mamy zªo»ono±¢ O(n + m).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ale: problem z porównywaniem liczb.
ts 6=p (mod q) ⇒ ts 6=p, czyli OK.
ale nieprawda, »e ts =p (mod q) ⇒ ts =p.
Zatem ka»de s takie, »e ts =p (mod q) musi by¢ dodatkowo
zwerykowane przez bezpo±rednie sprawdzenie warunku T [s + 1..s + m] = P[1..m].
Sprawia to, »e w pesymistycznych przypadkach (gdy wzorzec wyst¦puje cz¦sto) algorytm Rabina-Karpa dziaªa w czasie takim jak algorytm naiwny Θ((n − m + 1)m).
W przypadkach optymistycznych, gdy wzorzec wyst¦puje O(1) razy, mamy zªo»ono±¢ O(n + m).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ale: problem z porównywaniem liczb.
ts 6=p (mod q) ⇒ ts 6=p, czyli OK.
ale nieprawda, »e ts =p (mod q) ⇒ ts =p.
Zatem ka»de s takie, »e ts =p (mod q) musi by¢ dodatkowo
zwerykowane przez bezpo±rednie sprawdzenie warunku T [s + 1..s + m] = P[1..m].
Sprawia to, »e w pesymistycznych przypadkach (gdy wzorzec wyst¦puje cz¦sto) algorytm Rabina-Karpa dziaªa w czasie takim jak algorytm naiwny Θ((n − m + 1)m).
W przypadkach optymistycznych, gdy wzorzec wyst¦puje O(1) razy, mamy zªo»ono±¢ O(n + m).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ale: problem z porównywaniem liczb.
ts 6=p (mod q) ⇒ ts 6=p, czyli OK.
ale nieprawda, »e ts =p (mod q) ⇒ ts =p.
Zatem ka»de s takie, »e ts =p (mod q) musi by¢ dodatkowo
zwerykowane przez bezpo±rednie sprawdzenie warunku T [s + 1..s + m] = P[1..m].
Sprawia to, »e w pesymistycznych przypadkach (gdy wzorzec wyst¦puje cz¦sto) algorytm Rabina-Karpa dziaªa w czasie takim jak algorytm naiwny Θ((n − m + 1)m).
W przypadkach optymistycznych, gdy wzorzec wyst¦puje O(1) razy, mamy zªo»ono±¢ O(n + m).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ale: problem z porównywaniem liczb.
ts 6=p (mod q) ⇒ ts 6=p, czyli OK.
ale nieprawda, »e ts =p (mod q) ⇒ ts =p.
Zatem ka»de s takie, »e ts =p (mod q) musi by¢ dodatkowo
zwerykowane przez bezpo±rednie sprawdzenie warunku T [s + 1..s + m] = P[1..m].
Sprawia to, »e w pesymistycznych przypadkach (gdy wzorzec wyst¦puje cz¦sto) algorytm Rabina-Karpa dziaªa w czasie takim jak algorytm naiwny Θ((n − m + 1)m).
W przypadkach optymistycznych, gdy wzorzec wyst¦puje O(1) razy, mamy zªo»ono±¢ O(n + m).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
Ale: problem z porównywaniem liczb.
ts 6=p (mod q) ⇒ ts 6=p, czyli OK.
ale nieprawda, »e ts =p (mod q) ⇒ ts =p.
Zatem ka»de s takie, »e ts =p (mod q) musi by¢ dodatkowo
zwerykowane przez bezpo±rednie sprawdzenie warunku T [s + 1..s + m] = P[1..m].
Sprawia to, »e w pesymistycznych przypadkach (gdy wzorzec wyst¦puje cz¦sto) algorytm Rabina-Karpa dziaªa w czasie takim jak algorytm naiwny Θ((n − m + 1)m).
W przypadkach optymistycznych, gdy wzorzec wyst¦puje O(1) razy, mamy zªo»ono±¢ O(n + m).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Rabina-Karpa
RabinKarpMatcher(T, P, d, q) 1 begin 2 n := length(T); 3 m := length(P); 4 h := dm−1modq; 5 p := 0; 6 t0 := 0; 7 fori := 1tomdo 8 begin 9 p := (d*p + P[i])modq; 10 t0:= (d*t0+ T[i])modq 11 end; 12 fors := 0ton−mdo 13 begin 14 if p = ts then 15 if T [s + 1..s + m] = P[1..m] then16 wypisz 'Wzorzec wyst¦puje z przesuni¦ciem' s;
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Wyszukiwanie wzorca inne algorytmy
Istnieje wiele bardziej skomplikowanych algorytmów wyszukiwania wzorca o lepszej zªo»ono±ci, np.
Wyszukiwanie wzorca przy wykorzystaniu tzw. automatów sko«czonych, zªo»ono±¢ O(n + m|Σ|).
Algorytm Knutha-Morrisa-Pratta, zªo»ono±¢ O(n + m). Algorytm Boyera-Moore'a, pesymistyczny czas
O((n − m + 1)m + |Σ|), lecz czas ±redni ma o wiele lepszy, najbardziej praktyczny dla dªugich wzorców.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Wyszukiwanie wzorca inne algorytmy
Istnieje wiele bardziej skomplikowanych algorytmów wyszukiwania wzorca o lepszej zªo»ono±ci, np.
Wyszukiwanie wzorca przy wykorzystaniu tzw. automatów sko«czonych, zªo»ono±¢ O(n + m|Σ|).
Algorytm Knutha-Morrisa-Pratta, zªo»ono±¢ O(n + m). Algorytm Boyera-Moore'a, pesymistyczny czas
O((n − m + 1)m + |Σ|), lecz czas ±redni ma o wiele lepszy, najbardziej praktyczny dla dªugich wzorców.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Wyszukiwanie wzorca inne algorytmy
Istnieje wiele bardziej skomplikowanych algorytmów wyszukiwania wzorca o lepszej zªo»ono±ci, np.
Wyszukiwanie wzorca przy wykorzystaniu tzw. automatów sko«czonych, zªo»ono±¢ O(n + m|Σ|).
Algorytm Knutha-Morrisa-Pratta, zªo»ono±¢ O(n + m).
Algorytm Boyera-Moore'a, pesymistyczny czas
O((n − m + 1)m + |Σ|), lecz czas ±redni ma o wiele lepszy, najbardziej praktyczny dla dªugich wzorców.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Wyszukiwanie wzorca inne algorytmy
Istnieje wiele bardziej skomplikowanych algorytmów wyszukiwania wzorca o lepszej zªo»ono±ci, np.
Wyszukiwanie wzorca przy wykorzystaniu tzw. automatów sko«czonych, zªo»ono±¢ O(n + m|Σ|).
Algorytm Knutha-Morrisa-Pratta, zªo»ono±¢ O(n + m). Algorytm Boyera-Moore'a, pesymistyczny czas
O((n − m + 1)m + |Σ|), lecz czas ±redni ma o wiele lepszy, najbardziej praktyczny dla dªugich wzorców.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Kody Humana = cz¦sto stosowana, efektywna metoda kompresji danych.
W zale»no±ci od typu pliku oszcz¦dno±ci 20%-90%.
Idea: stworzenie optymalnego sposobu reprezentacji znaków za pomoc¡ ci¡gów bitów w oparciu o tabel¦ cz¦sto±ci wyst¦powania znaków.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Kody Humana = cz¦sto stosowana, efektywna metoda kompresji danych.
W zale»no±ci od typu pliku oszcz¦dno±ci 20%-90%.
Idea: stworzenie optymalnego sposobu reprezentacji znaków za pomoc¡ ci¡gów bitów w oparciu o tabel¦ cz¦sto±ci wyst¦powania znaków.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Kody Humana = cz¦sto stosowana, efektywna metoda kompresji danych.
W zale»no±ci od typu pliku oszcz¦dno±ci 20%-90%.
Idea: stworzenie optymalnego sposobu reprezentacji znaków za pomoc¡ ci¡gów bitów w oparciu o tabel¦ cz¦sto±ci wyst¦powania znaków.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Przykªad. Σ = {a, b, c, d, e}. Ka»dy znak reprezentowany jest przez pewien ustalony ci¡g bitów (kod binarny lubkod).
Je»eli stosujemy kod o staªej dªugo±ci, to do reprezentacji 6 znaków wystarcz¡ 3 bity:
a b c d e f
000 001 010 011 100 101
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Przykªad. Σ = {a, b, c, d, e}. Ka»dy znak reprezentowany jest przez pewien ustalony ci¡g bitów (kod binarny lubkod).
Je»eli stosujemy kod o staªej dªugo±ci, to do reprezentacji 6 znaków wystarcz¡ 3 bity:
a b c d e f
000 001 010 011 100 101
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Przykªad. Σ = {a, b, c, d, e}. Ka»dy znak reprezentowany jest przez pewien ustalony ci¡g bitów (kod binarny lubkod).
Je»eli stosujemy kod o staªej dªugo±ci, to do reprezentacji 6 znaków wystarcz¡ 3 bity:
a b c d e f
000 001 010 011 100 101
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Inne podej±cie: kody o zmiennej dªugo±ci cz¦±ciej wyst¦puj¡ce znaki reprezentowane za pomoc¡ krótszych sªów kodowych ni» znaki wyst¦puj¡ce rzadziej.
a b c d e f
Cz¦sto±¢ (w tys.) 45 13 12 16 9 5
Kody o staªej dª. 000 001 010 011 100 101
Kody o zmiennej dª. 0 101 100 111 1101 1100
Do reprezentacji naszego pliku za pomoc¡ kodów o zmiennej dª. potrzeba
45000·1+13000·3+12000·3+16000·3+9000·4+5000·4 = 224000 bitów.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Inne podej±cie: kody o zmiennej dªugo±ci cz¦±ciej wyst¦puj¡ce znaki reprezentowane za pomoc¡ krótszych sªów kodowych ni» znaki wyst¦puj¡ce rzadziej.
a b c d e f
Cz¦sto±¢ (w tys.) 45 13 12 16 9 5
Kody o staªej dª. 000 001 010 011 100 101
Kody o zmiennej dª. 0 101 100 111 1101 1100
Do reprezentacji naszego pliku za pomoc¡ kodów o zmiennej dª. potrzeba
45000·1+13000·3+12000·3+16000·3+9000·4+5000·4 = 224000 bitów.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Inne podej±cie: kody o zmiennej dªugo±ci cz¦±ciej wyst¦puj¡ce znaki reprezentowane za pomoc¡ krótszych sªów kodowych ni» znaki wyst¦puj¡ce rzadziej.
a b c d e f
Cz¦sto±¢ (w tys.) 45 13 12 16 9 5
Kody o staªej dª. 000 001 010 011 100 101
Kody o zmiennej dª. 0 101 100 111 1101 1100
Do reprezentacji naszego pliku za pomoc¡ kodów o zmiennej dª. potrzeba
45000·1+13000·3+12000·3+16000·3+9000·4+5000·4 = 224000 bitów.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Inne podej±cie: kody o zmiennej dªugo±ci cz¦±ciej wyst¦puj¡ce znaki reprezentowane za pomoc¡ krótszych sªów kodowych ni» znaki wyst¦puj¡ce rzadziej.
a b c d e f
Cz¦sto±¢ (w tys.) 45 13 12 16 9 5
Kody o staªej dª. 000 001 010 011 100 101
Kody o zmiennej dª. 0 101 100 111 1101 1100
Do reprezentacji naszego pliku za pomoc¡ kodów o zmiennej dª. potrzeba
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Jak odkodowywa¢ kody o zmiennej dªugo±ci?
Przykªad. Σ = {a, b}, kod: a ↔ 0, b ↔ 00.
Wówczas plik skªadaj¡cy si¦ z ci¡gu bitów 0000 mo»na rozkodowa¢ jako: aaaa, aba, bb, ....
Pomysª: kod preksowy = kod »adnego znaku nie jest preksem kodu innego znaku. Jednoznaczno±¢!
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Jak odkodowywa¢ kody o zmiennej dªugo±ci? Przykªad. Σ = {a, b}, kod: a ↔ 0, b ↔ 00.
Wówczas plik skªadaj¡cy si¦ z ci¡gu bitów 0000 mo»na rozkodowa¢ jako: aaaa, aba, bb, ....
Pomysª: kod preksowy = kod »adnego znaku nie jest preksem kodu innego znaku. Jednoznaczno±¢!
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Jak odkodowywa¢ kody o zmiennej dªugo±ci? Przykªad. Σ = {a, b}, kod: a ↔ 0, b ↔ 00.
Wówczas plik skªadaj¡cy si¦ z ci¡gu bitów 0000 mo»na rozkodowa¢ jako: aaaa, aba, bb, ....
Pomysª: kod preksowy = kod »adnego znaku nie jest preksem kodu innego znaku. Jednoznaczno±¢!
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Jak odkodowywa¢ kody o zmiennej dªugo±ci? Przykªad. Σ = {a, b}, kod: a ↔ 0, b ↔ 00.
Wówczas plik skªadaj¡cy si¦ z ci¡gu bitów 0000 mo»na rozkodowa¢ jako: aaaa, aba, bb, ....
Pomysª: kod preksowy = kod »adnego znaku nie jest preksem kodu innego znaku. Jednoznaczno±¢!
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Przykªad kodu preksowego:
a b c d e f
0 101 100 111 1101 1100
Wówczas sªowo
001011101 rozkªada si¦ jednoznacznie jako
0 0 101 1101 ↔ aabe.
Aby ªatwo odkodowywa¢ kody preksowe nale»y odpowiednio je reprezentowa¢ przy pomocy drzew binarnych takich, »e:
li±cie odpowiadaj¡ kodowanym znakom,
kraw¦dzie s¡ etykietowane przy pomocy 0 lub 1,
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Przykªad kodu preksowego:
a b c d e f
0 101 100 111 1101 1100 Wówczas sªowo
001011101 rozkªada si¦ jednoznacznie jako
0 0 101 1101 ↔ aabe.
Aby ªatwo odkodowywa¢ kody preksowe nale»y odpowiednio je reprezentowa¢ przy pomocy drzew binarnych takich, »e:
li±cie odpowiadaj¡ kodowanym znakom,
kraw¦dzie s¡ etykietowane przy pomocy 0 lub 1,
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Przykªad kodu preksowego:
a b c d e f
0 101 100 111 1101 1100 Wówczas sªowo
001011101 rozkªada si¦ jednoznacznie jako
0 0 101 1101 ↔ aabe.
Aby ªatwo odkodowywa¢ kody preksowe nale»y odpowiednio je reprezentowa¢ przy pomocy drzew binarnych takich, »e:
li±cie odpowiadaj¡ kodowanym znakom,
kraw¦dzie s¡ etykietowane przy pomocy 0 lub 1,
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Przykªad kodu preksowego:
a b c d e f
0 101 100 111 1101 1100 Wówczas sªowo
001011101 rozkªada si¦ jednoznacznie jako
0 0 101 1101 ↔ aabe.
Aby ªatwo odkodowywa¢ kody preksowe nale»y odpowiednio je reprezentowa¢ przy pomocy drzew binarnych takich, »e:
li±cie odpowiadaj¡ kodowanym znakom,
kraw¦dzie s¡ etykietowane przy pomocy 0 lub 1,
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Przykªad kodu preksowego:
a b c d e f
0 101 100 111 1101 1100 Wówczas sªowo
001011101 rozkªada si¦ jednoznacznie jako
0 0 101 1101 ↔ aabe.
Aby ªatwo odkodowywa¢ kody preksowe nale»y odpowiednio je reprezentowa¢ przy pomocy drzew binarnych takich, »e:
li±cie odpowiadaj¡ kodowanym znakom,
kraw¦dzie s¡ etykietowane przy pomocy 0 lub 1,
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Przykªad kodu preksowego:
a b c d e f
0 101 100 111 1101 1100 Wówczas sªowo
001011101 rozkªada si¦ jednoznacznie jako
0 0 101 1101 ↔ aabe.
Aby ªatwo odkodowywa¢ kody preksowe nale»y odpowiednio je reprezentowa¢ przy pomocy drzew binarnych takich, »e:
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Uwaga. Pokazuje si¦, »e:
za pomoc¡ kodów preksowych mo»na uzyska¢ maksymalny stopie« kompresji, osi¡galny za pomoc¡ kodów przypisanych znakom na staªe,
optymalny kod preksowy jest zawsze reprezentowany przez regularne drzewo binarne (tj. takie, »e ka»dy wierzchoªek oprócz li±ci ma 2 synów).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Uwaga. Pokazuje si¦, »e:
za pomoc¡ kodów preksowych mo»na uzyska¢ maksymalny stopie« kompresji, osi¡galny za pomoc¡ kodów przypisanych znakom na staªe,
optymalny kod preksowy jest zawsze reprezentowany przez regularne drzewo binarne (tj. takie, »e ka»dy wierzchoªek oprócz li±ci ma 2 synów).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Uwaga. Pokazuje si¦, »e:
za pomoc¡ kodów preksowych mo»na uzyska¢ maksymalny stopie« kompresji, osi¡galny za pomoc¡ kodów przypisanych znakom na staªe,
optymalny kod preksowy jest zawsze reprezentowany przez regularne drzewo binarne (tj. takie, »e ka»dy wierzchoªek oprócz li±ci ma 2 synów).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Odkodowywanie sªowa (pliku) zakodowanego przez kod preksowy przy u»yciu drzewa kodu:
startujemy od korzenia,
odczytujemy aktualny bit odkodowywanego sªowa, je»eli jest to 0, przechodzimy do lewego syna, je»eli 1, do prawego,
odczytujemy kolejny bit i powtarzamy analogicznie w¦drówk¦ po drzewie, a» dojdziemy do li±cia,
wówczas zwracamy znak odpowiadaj¡cy li±ciowi.
Operacj¦ powtarzamy, a» odczytamy wszystkie bity sªowa.
Jak skonstuowa¢ optymalny kod preksowy (lub równowa»nie jego drzewo)?
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Odkodowywanie sªowa (pliku) zakodowanego przez kod preksowy przy u»yciu drzewa kodu:
startujemy od korzenia,
odczytujemy aktualny bit odkodowywanego sªowa, je»eli jest to 0, przechodzimy do lewego syna, je»eli 1, do prawego,
odczytujemy kolejny bit i powtarzamy analogicznie w¦drówk¦ po drzewie, a» dojdziemy do li±cia,
wówczas zwracamy znak odpowiadaj¡cy li±ciowi.
Operacj¦ powtarzamy, a» odczytamy wszystkie bity sªowa.
Jak skonstuowa¢ optymalny kod preksowy (lub równowa»nie jego drzewo)?
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Odkodowywanie sªowa (pliku) zakodowanego przez kod preksowy przy u»yciu drzewa kodu:
startujemy od korzenia,
odczytujemy aktualny bit odkodowywanego sªowa,
je»eli jest to 0, przechodzimy do lewego syna, je»eli 1, do prawego,
odczytujemy kolejny bit i powtarzamy analogicznie w¦drówk¦ po drzewie, a» dojdziemy do li±cia,
wówczas zwracamy znak odpowiadaj¡cy li±ciowi.
Operacj¦ powtarzamy, a» odczytamy wszystkie bity sªowa.
Jak skonstuowa¢ optymalny kod preksowy (lub równowa»nie jego drzewo)?
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Odkodowywanie sªowa (pliku) zakodowanego przez kod preksowy przy u»yciu drzewa kodu:
startujemy od korzenia,
odczytujemy aktualny bit odkodowywanego sªowa, je»eli jest to 0, przechodzimy do lewego syna, je»eli 1, do prawego,
odczytujemy kolejny bit i powtarzamy analogicznie w¦drówk¦ po drzewie, a» dojdziemy do li±cia,
wówczas zwracamy znak odpowiadaj¡cy li±ciowi.
Operacj¦ powtarzamy, a» odczytamy wszystkie bity sªowa.
Jak skonstuowa¢ optymalny kod preksowy (lub równowa»nie jego drzewo)?
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Odkodowywanie sªowa (pliku) zakodowanego przez kod preksowy przy u»yciu drzewa kodu:
startujemy od korzenia,
odczytujemy aktualny bit odkodowywanego sªowa, je»eli jest to 0, przechodzimy do lewego syna, je»eli 1, do prawego,
odczytujemy kolejny bit i powtarzamy analogicznie w¦drówk¦ po drzewie, a» dojdziemy do li±cia,
wówczas zwracamy znak odpowiadaj¡cy li±ciowi.
Operacj¦ powtarzamy, a» odczytamy wszystkie bity sªowa.
Jak skonstuowa¢ optymalny kod preksowy (lub równowa»nie jego drzewo)?
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Odkodowywanie sªowa (pliku) zakodowanego przez kod preksowy przy u»yciu drzewa kodu:
startujemy od korzenia,
odczytujemy aktualny bit odkodowywanego sªowa, je»eli jest to 0, przechodzimy do lewego syna, je»eli 1, do prawego,
odczytujemy kolejny bit i powtarzamy analogicznie w¦drówk¦ po drzewie, a» dojdziemy do li±cia,
wówczas zwracamy znak odpowiadaj¡cy li±ciowi.
Operacj¦ powtarzamy, a» odczytamy wszystkie bity sªowa.
Jak skonstuowa¢ optymalny kod preksowy (lub równowa»nie jego drzewo)?
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Odkodowywanie sªowa (pliku) zakodowanego przez kod preksowy przy u»yciu drzewa kodu:
startujemy od korzenia,
odczytujemy aktualny bit odkodowywanego sªowa, je»eli jest to 0, przechodzimy do lewego syna, je»eli 1, do prawego,
odczytujemy kolejny bit i powtarzamy analogicznie w¦drówk¦ po drzewie, a» dojdziemy do li±cia,
wówczas zwracamy znak odpowiadaj¡cy li±ciowi.
Operacj¦ powtarzamy, a» odczytamy wszystkie bity sªowa.
Jak skonstuowa¢ optymalny kod preksowy (lub równowa»nie jego drzewo)?
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Kodowanie znaków
Odkodowywanie sªowa (pliku) zakodowanego przez kod preksowy przy u»yciu drzewa kodu:
startujemy od korzenia,
odczytujemy aktualny bit odkodowywanego sªowa, je»eli jest to 0, przechodzimy do lewego syna, je»eli 1, do prawego,
odczytujemy kolejny bit i powtarzamy analogicznie w¦drówk¦ po drzewie, a» dojdziemy do li±cia,
wówczas zwracamy znak odpowiadaj¡cy li±ciowi.
Operacj¦ powtarzamy, a» odczytamy wszystkie bity sªowa.
Jak skonstuowa¢ optymalny kod preksowy (lub równowa»nie jego drzewo)?
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Humana
Algorytm (zachªanny) konstruowania optymalnego kodu preksowego zwanego kodem Humana.
Dane: alfabet Σ, tablica cz¦sto±ci wyst¡pie« poszczególnych liter alfabetu.
Algorytm konstruuje drzewo kodu preksowego w sposób wst¦puj¡cy:
startuje od zbioru |Σ| li±ci,
wykonuje kolejne operacje scalania, które daj¡ w efekcie jedno drzewo,
kolejno±¢ wykonywania operacji scalania jest zdeterminowana liczbami wyst¡pie« odpowiednich znaków.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Humana
Algorytm (zachªanny) konstruowania optymalnego kodu preksowego zwanego kodem Humana.
Dane: alfabet Σ, tablica cz¦sto±ci wyst¡pie« poszczególnych liter alfabetu.
Algorytm konstruuje drzewo kodu preksowego w sposób wst¦puj¡cy:
startuje od zbioru |Σ| li±ci,
wykonuje kolejne operacje scalania, które daj¡ w efekcie jedno drzewo,
kolejno±¢ wykonywania operacji scalania jest zdeterminowana liczbami wyst¡pie« odpowiednich znaków.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Humana
Algorytm (zachªanny) konstruowania optymalnego kodu preksowego zwanego kodem Humana.
Dane: alfabet Σ, tablica cz¦sto±ci wyst¡pie« poszczególnych liter alfabetu.
Algorytm konstruuje drzewo kodu preksowego w sposób wst¦puj¡cy:
startuje od zbioru |Σ| li±ci,
wykonuje kolejne operacje scalania, które daj¡ w efekcie jedno drzewo,
kolejno±¢ wykonywania operacji scalania jest zdeterminowana liczbami wyst¡pie« odpowiednich znaków.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Humana
Algorytm (zachªanny) konstruowania optymalnego kodu preksowego zwanego kodem Humana.
Dane: alfabet Σ, tablica cz¦sto±ci wyst¡pie« poszczególnych liter alfabetu.
Algorytm konstruuje drzewo kodu preksowego w sposób wst¦puj¡cy:
startuje od zbioru |Σ| li±ci,
wykonuje kolejne operacje scalania, które daj¡ w efekcie jedno drzewo,
kolejno±¢ wykonywania operacji scalania jest zdeterminowana liczbami wyst¡pie« odpowiednich znaków.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Humana
Algorytm (zachªanny) konstruowania optymalnego kodu preksowego zwanego kodem Humana.
Dane: alfabet Σ, tablica cz¦sto±ci wyst¡pie« poszczególnych liter alfabetu.
Algorytm konstruuje drzewo kodu preksowego w sposób wst¦puj¡cy:
startuje od zbioru |Σ| li±ci,
wykonuje kolejne operacje scalania, które daj¡ w efekcie jedno drzewo,
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Humana
Human(Σ) 1 begin 2 n := |Σ|; 3 Q := Σ; 4 fori := 1ton−1do 5 begin 6 z := AllocateNode(); 7 x := z.left := ExtractMin(Q); 8 y := z.right := ExtractMin(Q); 9 z.f := x.f + y.f; 10 Insert(Q, z) 11 end; 12 returnExtractMin(Q) 13 end;Linia 6 = utworzenie wierzchoªka drzewa (zale»ne od konkretnej implementacji).
Linia 9 = f dla li±ci powinna zawiera¢ cz¦sto±ci wyst¡pie« znaków.
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Algorytm Humana
Human(Σ) 1 begin 2 n := |Σ|; 3 Q := Σ; 4 fori := 1ton−1do 5 begin 6 z := AllocateNode(); 7 x := z.left := ExtractMin(Q); 8 y := z.right := ExtractMin(Q); 9 z.f := x.f + y.f; 10 Insert(Q, z) 11 end; 12 returnExtractMin(Q) 13 end;Linia 6 = utworzenie wierzchoªka drzewa (zale»ne od konkretnej implementacji).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Geometria obliczeniowa
Dziaª informatyki zajmuj¡cy si¦ algorytmami rozwi¡zuj¡cymi problemy geometryczne.
Zastosowania m.in. w:
grace komputerowej, grach komputerowych,
projektowaniu ukªadów scalonych,
CAD (projektowanie wspomagane komputerowo), robotyce,
statystyce,
wielu dziaªach matematyki,
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Geometria obliczeniowa
Dziaª informatyki zajmuj¡cy si¦ algorytmami rozwi¡zuj¡cymi problemy geometryczne.
Zastosowania m.in. w:
grace komputerowej, grach komputerowych,
projektowaniu ukªadów scalonych,
CAD (projektowanie wspomagane komputerowo), robotyce,
statystyce,
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Obiekty geometryczne
Rozwa»ane obiekty (na pªaszczy¹nie):
punkt reprezentowany jako para liczb P = (x, y), x, y ∈ R, odcinek reprezentowany jako para punktów (ko«ców odcinka) P1,P2i oznaczany P1P2,
odcinek skierowany (gdy wa»na jest kolejno±¢ ko«ców), oznaczany−−−→P1P2,
wielok¡t reprezentowany jako ci¡g < P0,P1, . . . ,Pn−1>
swoich wierzchoªków (na ogóª w porz¡dku przeciwnym do ruchu wskazówek zegara).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Obiekty geometryczne
Rozwa»ane obiekty (na pªaszczy¹nie):
punkt reprezentowany jako para liczb P = (x, y), x, y ∈ R,
odcinek reprezentowany jako para punktów (ko«ców odcinka) P1,P2i oznaczany P1P2,
odcinek skierowany (gdy wa»na jest kolejno±¢ ko«ców), oznaczany−−−→P1P2,
wielok¡t reprezentowany jako ci¡g < P0,P1, . . . ,Pn−1>
swoich wierzchoªków (na ogóª w porz¡dku przeciwnym do ruchu wskazówek zegara).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Obiekty geometryczne
Rozwa»ane obiekty (na pªaszczy¹nie):
punkt reprezentowany jako para liczb P = (x, y), x, y ∈ R, odcinek reprezentowany jako para punktów (ko«ców odcinka) P1,P2i oznaczany P1P2,
odcinek skierowany (gdy wa»na jest kolejno±¢ ko«ców), oznaczany−−−→P1P2,
wielok¡t reprezentowany jako ci¡g < P0,P1, . . . ,Pn−1>
swoich wierzchoªków (na ogóª w porz¡dku przeciwnym do ruchu wskazówek zegara).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Obiekty geometryczne
Rozwa»ane obiekty (na pªaszczy¹nie):
punkt reprezentowany jako para liczb P = (x, y), x, y ∈ R, odcinek reprezentowany jako para punktów (ko«ców odcinka) P1,P2i oznaczany P1P2,
odcinek skierowany (gdy wa»na jest kolejno±¢ ko«ców), oznaczany−−−→P1P2,
wielok¡t reprezentowany jako ci¡g < P0,P1, . . . ,Pn−1>
swoich wierzchoªków (na ogóª w porz¡dku przeciwnym do ruchu wskazówek zegara).
Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki
Obiekty geometryczne
Rozwa»ane obiekty (na pªaszczy¹nie):
punkt reprezentowany jako para liczb P = (x, y), x, y ∈ R, odcinek reprezentowany jako para punktów (ko«ców odcinka) P1,P2i oznaczany P1P2,
odcinek skierowany (gdy wa»na jest kolejno±¢ ko«ców), oznaczany−−−→P1P2,
wielok¡t reprezentowany jako ci¡g < P0,P1, . . . ,Pn−1>
swoich wierzchoªków (na ogóª w porz¡dku przeciwnym do ruchu wskazówek zegara).