• Nie Znaleziono Wyników

Część 4

N/A
N/A
Protected

Academic year: 2021

Share "Część 4"

Copied!
329
0
0

Pełen tekst

(1)

Wyszukiwanie wzorca Kody Humana Geometria obliczeniowa Dodatki

Algorytmy i struktury danych

(2)

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].

(3)

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].

(4)

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].

(5)

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].

(6)

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].

(7)

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].

(8)

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 Σ.

(9)

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.

(10)

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.

(11)

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.

(12)

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.

(13)

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.

(14)

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.

(15)

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.

(16)

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).

(17)

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±¢.

(18)

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±¢.

(19)

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±¢.

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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

(28)

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?

(29)

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.

(30)

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.

(31)

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.

(32)

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.

(33)

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 ?

(34)

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 ?

(35)

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 ?

(36)

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 ?

(37)

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).

(38)

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 ?

(39)

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.

(40)

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.

(41)

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.

(42)

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.

(43)

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).

(44)

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).

(45)

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).

(46)

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).

(47)

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).

(48)

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).

(49)

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).

(50)

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).

(51)

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).

(52)

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.

(53)

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.

(54)

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.

(55)

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.

(56)

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.

(57)

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

(58)

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

(59)

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

(60)

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).

(61)

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).

(62)

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).

(63)

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).

(64)

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).

(65)

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).

(66)

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] then

16 wypisz 'Wzorzec wyst¦puje z przesuni¦ciem' s;

(67)

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.

(68)

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.

(69)

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.

(70)

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.

(71)

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.

(72)

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.

(73)

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.

(74)

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

(75)

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

(76)

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

(77)

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.

(78)

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.

(79)

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.

(80)

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

(81)

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±¢!

(82)

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±¢!

(83)

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±¢!

(84)

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±¢!

(85)

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,

(86)

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,

(87)

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,

(88)

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,

(89)

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,

(90)

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:

(91)

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).

(92)

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).

(93)

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).

(94)

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)?

(95)

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)?

(96)

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)?

(97)

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)?

(98)

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)?

(99)

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)?

(100)

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)?

(101)

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)?

(102)

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.

(103)

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.

(104)

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.

(105)

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.

(106)

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,

(107)

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.

(108)

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).

(109)

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,

(110)

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,

(111)

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).

(112)

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).

(113)

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).

(114)

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).

(115)

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).

Cytaty

Powiązane dokumenty

Analiza przykładowych algorytmów pod kątem ich złożoności obliczeniowej (sito Eratostenesa, rozkład liczby na czynniki pierwsze itp.) Klasy złożoności obliczeniowej. Proste

Komunikaty nigdy nie znikają, a budowa tablicy jest taka, że łatwo się zorientować, w jakiej kolejności pojawiały się obecne na niej napisy.. Taka tablica jak wyżej,

Stąd wynika, że rozwartość trójkątowa zbioru E jest nie większa od rozwartości trójkątowej odcinka L... Последовательность alf

Optymalizacja przy użyciu algorytmu genetycznego jest w stanie z powodzeniem odtworzyć wartość dyfuzyjności cieplnej, pomimo niezbyt wyraźnego maksimum zależności

Gotowa książka wraz z graficzną oprawą na warsztat bierze operator DTP, który układa elementy książki do publikacji.. Kolejnym etapem jest drukarnia

2) metody samooceny metody samooceny metody samooceny metody samooceny, na przykład Schalling-Sif- metody samooceny neos Personality Scale, Revised Schalling-Sifneos Personality

Na podstawie tekstu źródłowego i własnej wiedzy wykonaj polecenia.. My, Stanisław August, z łaski Boga król Polski, Wielki Książę Litewski, książę Rusi,

przewodniczącemu zespołu nadzorującego egzamin. Arkusz zawiera trzy części. Część pierwsza to test, część druga wymaga analizy formalnej dzieł, a część trzecia