6. Algorithmen auf Zeichenketten

Größe: px
Ab Seite anzeigen:

Download "6. Algorithmen auf Zeichenketten"

Transkript

1 6. Algorithmen auf Zeichenketten

2 Motivation Wir lernen nun Algorithmen zur Lösung verschiedener elementarer Probleme auf Zeichenketten zu lösen Zeichenketten spielen eine wichtige Rolle in diversen Gebieten der Informatik und ihrer Anwendungen z. B. Verarbeitung von Texten (z. B. natürliche Sprache, Code) in Anwendungen (z. B. IDEs, Editoren, Browser) Erkennung von Plagiaten (z. B. in Veröffentlichungen) Bioinformatik (DNA kann als Zeichenkette bestehend aus den Symbolen A, C, G und T gesehen werden) 2

3 Darstellung von Zeichenketten Zur Darstellung einer Zeichenkette s verwenden wir ein char[] und nutzen folgende Notation s bezeichnet die Länge der Zeichenkette, d. h. die Gesamtzahl der darin enthaltenen Zeichen s[i] bezeichnet das i-te Zeichen in der Zeichenketten, beginnend bei 0 s[i:j] bezeichnet die Teilzeichenkette bestehend aus allen Zeichen von s[i] bis s[j-1] 3

4 Darstellung von Zeichenketten Wir definieren Präfixe und Suffixe einer Zeichenkette s[:i] bezeichnet das Präfix der Länge i der Zeichenkette bestehend aus den Zeichen von s[0] bis s[i-1] s[i:] bezeichnet das Suffix der Länge s - i der Zeichenkette bestehend aus den Zeichen von s[i] bis s[ s -1] 4

5 Darstellung von Zeichenketten Beispiel: Wir betrachten die Zeichenkette s = i n f o r m a t i k Für diese gilt z. B.: s = 10 s[5] = m s[2:8] = f o r m a t s[:4] = i n f o s[5:] = m a t i k 5

6 Inhalt 6.1 Editierdistanz von Levenshtein 6.2 Längste gemeinsame Zeichenketten 6.3 Längste gemeinsame Zeichenfolge 6.4 Suche in Zeichenketten 6

7 6.1 Editierdistanz von Levenshtein Wir möchten nun messen wie unähnlich, d. h. wie weit voneinander entfernt, zwei Zeichenketten s und t sind Praktische Anwendungen solch einer Distanz zwischen Zeichenketten sind z. B.: Bestimmen eines Korrekturvorschlages für ein nicht bekanntes, vermutlich falsch geschriebenes, Wort? 7

8 Editierdistanz von Levenshtein Erkennen von doppelten Datensätzen z. B. in Datenbank KundenNr Name Vorname PLZ Wohnort Meier Max P Perl Meyer Max Perl Die vom russischen Mathematiker Vladimir Levenshtein vorgeschlagene Editierdistanz definiert die Distanz zwischen zwei Zeichenketten s und t als die minimale Anzahl von Editieroperationen, die notwendig ist, um die Zeichenkette s in die Zeichenkette t umzuformen 8

9 Editieroperationen Folgende Editieroperationen sind zur Umformung erlaubt Einfügen eines Zeichens in s Löschen eines Zeichens aus s Ersetzen eines Zeichens in s Beispiel: Wir betrachten die beiden Zeichenketten s = a f f e t = a p f e l Die Editierdistanz zwischen s und t beträgt 2: ersetze das erste f durch ein p füge ein l am Ende ein 9

10 Editierdistanz von Levenshtein Wir beobachten, dass es mehrere solche Folgen von Editieroperationen minimaler Länge geben kann Beispiel: Wir betrachten die beiden Zeichenketten s = a l l e t = a l e Die Editierdistanz zwischen s und t beträgt 1: lösche das erste oder das zweite l Wir sind zunächst nur an der Editierdistanz interessiert und sehen später wie sich eine korrespondierende Folge von Editieroperationen bestimmen lässt 10

11 <latexit sha1_base64="hclxp7cibayj6q1fq0ijfq3it0o=">aaadnnicdvjbaxqxfm6mt7retuqbcmffqsbzqyrbgrdqfx8svhdbqmdzmpmzu+kmkzhjwmcwv0v/ii++ia/+bdmziu5wd0n48p3vjcfnjc040yakvnj+hyuxll/zunq7dv3gzvv9zduhwpakwphkltvxsjrwlspymmphufbarmrhkf3unf6j96a0k/lbuxuwewsesxmjxdhq2v+ukmjhjeohsj7zhchfkm0uglqobrw8r3tjcnow29ztw05hnnlxkmy3xwvubikyhri229inu9hkiwnwxzv+hf+6geekwzwwdqk7j+loof0jow0l4fls8pj2b1gwvtomnu7g8yaootygo7uotypppjdpmkllabmhngh9ekefmbjjdkmc3ctkdqwhszkhexivpaa1sxoqaoyqvt0o5ksanti2atv+6jgmz6rymze4zf+oseroxynukztx6nvfq/7tl0q5nctvk/dbw5yfo6zbnkwkqkopjdzta5ma2xbiwv6ubnlajtorotysn78bz0wbnbxygfdfxckwxrbfqhf/ppe0gtyca7cllykon1i4x4xtwhgundrkxmchulhoqqmh655rze/64/+dw+0gjol4zbpbanj1cg2ge+gb2kixeofg6bu6qgnevfvenvfa2/c/+1/9b/73tup7v2luobxzf/weauwhbq==</latexit> <latexit sha1_base64="hclxp7cibayj6q1fq0ijfq3it0o=">aaadnnicdvjbaxqxfm6mt7retuqbcmffqsbzqyrbgrdqfx8svhdbqmdzmpmzu+kmkzhjwmcwv0v/ii++ia/+bdmziu5wd0n48p3vjcfnjc040yakvnj+hyuxll/zunq7dv3gzvv9zduhwpakwphkltvxsjrwlspymmphufbarmrhkf3unf6j96a0k/lbuxuwewsesxmjxdhq2v+ukmjhjeohsj7zhchfkm0uglqobrw8r3tjcnow29ztw05hnnlxkmy3xwvubikyhri229inu9hkiwnwxzv+hf+6geekwzwwdqk7j+loof0jow0l4fls8pj2b1gwvtomnu7g8yaootygo7uotypppjdpmkllabmhngh9ekefmbjjdkmc3ctkdqwhszkhexivpaa1sxoqaoyqvt0o5ksanti2atv+6jgmz6rymze4zf+oseroxynukztx6nvfq/7tl0q5nctvk/dbw5yfo6zbnkwkqkopjdzta5ma2xbiwv6ubnlajtorotysn78bz0wbnbxygfdfxckwxrbfqhf/ppe0gtyca7cllykon1i4x4xtwhgundrkxmchulhoqqmh655rze/64/+dw+0gjol4zbpbanj1cg2ge+gb2kixeofg6bu6qgnevfvenvfa2/c/+1/9b/73tup7v2luobxzf/weauwhbq==</latexit> <latexit sha1_base64="hclxp7cibayj6q1fq0ijfq3it0o=">aaadnnicdvjbaxqxfm6mt7retuqbcmffqsbzqyrbgrdqfx8svhdbqmdzmpmzu+kmkzhjwmcwv0v/ii++ia/+bdmziu5wd0n48p3vjcfnjc040yakvnj+hyuxll/zunq7dv3gzvv9zduhwpakwphkltvxsjrwlspymmphufbarmrhkf3unf6j96a0k/lbuxuwewsesxmjxdhq2v+ukmjhjeohsj7zhchfkm0uglqobrw8r3tjcnow29ztw05hnnlxkmy3xwvubikyhri229inu9hkiwnwxzv+hf+6geekwzwwdqk7j+loof0jow0l4fls8pj2b1gwvtomnu7g8yaootygo7uotypppjdpmkllabmhngh9ekefmbjjdkmc3ctkdqwhszkhexivpaa1sxoqaoyqvt0o5ksanti2atv+6jgmz6rymze4zf+oseroxynukztx6nvfq/7tl0q5nctvk/dbw5yfo6zbnkwkqkopjdzta5ma2xbiwv6ubnlajtorotysn78bz0wbnbxygfdfxckwxrbfqhf/ppe0gtyca7cllykon1i4x4xtwhgundrkxmchulhoqqmh655rze/64/+dw+0gjol4zbpbanj1cg2ge+gb2kixeofg6bu6qgnevfvenvfa2/c/+1/9b/73tup7v2luobxzf/weauwhbq==</latexit> <latexit sha1_base64="2pnf8pt+ebnxqnrahf/bjfidcfg=">aaadnnicdvjdb9mwfhxc1yhfhtwijisknctujanenwmp0l54ynkq6dapisrhuw292ngwhuaw8rvgr/dcg+kvn4ctfke7ulkt43ppta/vdvpwpk0yfvx8s5evxl22db1z4+at23e623eptswvhrgvxkrtlgjglieryybdaagaijtdsbo4apwnh0bpjvn3piogewswsymjxdhq0v0ck8jhneohsj7zmchfkm0ugdqvbdr/uxfifgyst62ntpwobfy+jnl+u9bccqqxcyvstqph+2hy1dtrkxo/xq/cdhecr0vypordkcxpofsjowsl4fjc5jhp9sl+7t4gflahl4koh7bwqys7mmx7szittbsqg8qj1umolezijjomcncvkduuhc7idmyklegbkrezkakmqtbdduzege5s24aap3jmhqdsuzkb3lj/r1gitk5e6ptnk/wmryh/6uulxbis6rx7rwglt0umqzyliqiqkyw81xuzmukgsswvsgm5xsy6ltk2eje/awdmatw8cobqxvwpmj0trahxf6ytt4e2ggm3cxypkddycfgfk8irrpw64mtax0c4akn7dtyd15rf9cf/b8e7/sjsr2+f94advzo20h30eo2gcl1eq/qahaerot4d78b74x36x/xv/nf/x1lqe6uye2jn/j+/af3pbre=</latexit> Rekursive Definition der Editierdistanz Editierdistanz d(s,t) lässt sich wie folgt rekursiv definieren d(s[: 0], t[: 0]) = : 0 d(s[: i], t[: 0]) = : i d(s[: 0], t[: j]) = : j (1) (2) (3) Basisfälle (1) Leere Zeichenketten haben Editierdistanz von 0 (2) Wir können alle Zeichen aus s[:i] löschen, um eine leere Zeichenkette zu erhalten (3) Wir können alle Zeichen aus t[:j] in die leere Zeichenkette einfügen 11

12 Rekursive Definition der Editierdistanz Editierdistanz d(s,t) lässt sich wie folgt rekursiv definieren Y d(s[: i 1],t[: j 1]) + 1(s[i 1] = t[j 1]) _] d(s[: i], t[: j]) = min d(s[: i 1],t[: j]) + 1 (4) (5) _[ d(s[: i],t[: j 1]) + 1 (6) Sind beide Zeichenketten nicht leer, so betrachten wir (4) die Editierdistanz der nächstkürzeren Präfixe und überprüfen, ob das letzte Zeichen in s[:i] durch das letzte Zeichen in t[:j] ersetzt werden muss 12

13 <latexit sha1_base64="ikkslf7l/ecp1pifuj70vl++7we=">aaadi3icdvllbtqwfhxcq4txfnjbwmluqkg0j4jec6o0ehs2sevi2krjaoq4d2zmnedtbwhw/ogf4gvyitys+a3wojkiogwunojkhn9j69wklebkh+f3x71w8dllk2txvwvxb9y8nvi/fajkwjiys1ku8jihcgqvyky5fnbcsab5iuaoyv50+te7kiqxxrvdvbdndf7wgwduw2o6+eryqhepmlg7psz8o4oxkeae68lbix/ifuwezdqxhklgzgtdparna9jikjoaps/6d8tal8kbenuh6zhxwj/k/hmaqjge2nle8vlc++t5o+lggpo7e7vh4z38n4j8sk/h6c7q62c67hislqzoodbmukumuvjp2dprzgry71pbrvlg5zchyuurklgzq5mdls2qbgfbc1cx6znt8yzlujwrpx0kjxv2biehuvjnntidxy7qvnar/9rs1rmung6sssw0tdqqq3n2ccl0spbeutl0uzxv1bnb69lubhhr1roktrz8rbzyl7gbpu65bkzfywflktt4mftqszm2p4hh+kytjjx9criepf08enue08osnmivckrhq5db7ll5fraehdfvmed/g8mdpwr96pwt4wh3ote0hu6hb2glregpgqgx6acneum/nfvohrppfna/uf/db8utrnpacwetlpvjfynyaeu=</latexit> <latexit sha1_base64="ikkslf7l/ecp1pifuj70vl++7we=">aaadi3icdvllbtqwfhxcq4txfnjbwmluqkg0j4jec6o0ehs2sevi2krjaoq4d2zmnedtbwhw/ogf4gvyitys+a3wojkiogwunojkhn9j69wklebkh+f3x71w8dllk2txvwvxb9y8nvi/fajkwjiys1ku8jihcgqvyky5fnbcsab5iuaoyv50+te7kiqxxrvdvbdndf7wgwduw2o6+eryqhepmlg7psz8o4oxkeae68lbix/ifuwezdqxhklgzgtdparna9jikjoaps/6d8tal8kbenuh6zhxwj/k/hmaqjge2nle8vlc++t5o+lggpo7e7vh4z38n4j8sk/h6c7q62c67hislqzoodbmukumuvjp2dprzgry71pbrvlg5zchyuurklgzq5mdls2qbgfbc1cx6znt8yzlujwrpx0kjxv2biehuvjnntidxy7qvnar/9rs1rmung6sssw0tdqqq3n2ccl0spbeutl0uzxv1bnb69lubhhr1roktrz8rbzyl7gbpu65bkzfywflktt4mftqszm2p4hh+kytjjx9criepf08enue08osnmivckrhq5db7ll5fraehdfvmed/g8mdpwr96pwt4wh3ote0hu6hb2glregpgqgx6acneum/nfvohrppfna/uf/db8utrnpacwetlpvjfynyaeu=</latexit> <latexit sha1_base64="ikkslf7l/ecp1pifuj70vl++7we=">aaadi3icdvllbtqwfhxcq4txfnjbwmluqkg0j4jec6o0ehs2sevi2krjaoq4d2zmnedtbwhw/ogf4gvyitys+a3wojkiogwunojkhn9j69wklebkh+f3x71w8dllk2txvwvxb9y8nvi/fajkwjiys1ku8jihcgqvyky5fnbcsab5iuaoyv50+te7kiqxxrvdvbdndf7wgwduw2o6+eryqhepmlg7psz8o4oxkeae68lbix/ifuwezdqxhklgzgtdparna9jikjoaps/6d8tal8kbenuh6zhxwj/k/hmaqjge2nle8vlc++t5o+lggpo7e7vh4z38n4j8sk/h6c7q62c67hislqzoodbmukumuvjp2dprzgry71pbrvlg5zchyuurklgzq5mdls2qbgfbc1cx6znt8yzlujwrpx0kjxv2biehuvjnntidxy7qvnar/9rs1rmung6sssw0tdqqq3n2ccl0spbeutl0uzxv1bnb69lubhhr1roktrz8rbzyl7gbpu65bkzfywflktt4mftqszm2p4hh+kytjjx9criepf08enue08osnmivckrhq5db7ll5fraehdfvmed/g8mdpwr96pwt4wh3ote0hu6hb2glregpgqgx6acneum/nfvohrppfna/uf/db8utrnpacwetlpvjfynyaeu=</latexit> <latexit sha1_base64="iayz2c49nhocmoxcqcw33kvezg4=">aaadi3icdvllbtqwfhxcq4txfjawsbi1khlkuzcygipvysmgquhmw2ksjrznzoyje6e2awqr/8bp8dxsebsw/azrnmwgogwunojkhn9j69ykfwdkh+f3x71w8dllkxtxvwvxb9y8ndi8farelsmmqebcnqreawcljdxthe4qcarioryn+ytop34hujfrvtfnbulb5iwbmuq0paadt3fb9cjtjmp31iq9ihicl3ck9estxq/wpo45zhrsvdifossnkzi0raehjj6tsfasf7e09sk8jdcd8h7hxvhh2t9dx1bmkzsvlmy+0h78/of0maz93b1r+hgp/w0ip+xrifz1on10tjwjwhdqasqjupmorhrintwjhkx3raaincdzmjcwihxixmxbfkblsy5bwjicvgl6zfu8zzkmz4s0t6lxz57tmkrqqilsu7pluz3xovkfwqy6w7xttsperkmq1lnn8o9lpkocpzlipstnvffnbq9no8swsqo1lhr5+vnnsra4gz3omasqewmbozlzedbdeemotj+if/enjhgr+xxkkui7wpcqcaavjwzekubew4egsn1c+ra2nh3x75ng/4ojxt8k/ej1k+hbadw4dxqx3uc7kejp0qf6iq7rgfh007nnbdnb7mf3i/vv/bbc6jqrnjtordwfvwb5zf/i</latexit> Rekursive Definition der Editierdistanz Hierbei verwenden wir eine so genannte Indikatorfunktion 1(s[i 1] = t[j 1]) = ; 1 : s[i 1] = t[k 1] 0 : s[i 1] = t[k 1], die uns anzeigt, ob das letzte Zeichen ersetzt werden muss oder unverändert bleiben kann 13

14 Rekursive Definition der Editierdistanz Editierdistanz d(s,t) lässt sich wie folgt rekursiv definieren Y d(s[: i 1],t[: j 1]) + 1(s[i 1] = t[j 1]) _] d(s[: i], t[: j]) = min d(s[: i 1],t[: j]) + 1 (4) (5) _[ d(s[: i],t[: j 1]) + 1 (6) Sind beide Zeichenketten nicht leer, so betrachten wir (5) die Editierdistanz des nächstkürzeren Präfix s[:i-1] und löschen das Zeichen s[i-1] 14

15 Rekursive Definition der Editierdistanz Editierdistanz d(s,t) lässt sich wie folgt rekursiv definieren Y d(s[: i 1],t[: j 1]) + 1(s[i 1] = t[j 1]) _] d(s[: i], t[: j]) = min d(s[: i 1],t[: j]) + 1 (4) (5) _[ d(s[: i],t[: j 1]) + 1 (6) Sind beide Zeichenketten nicht leer, so betrachten wir (6) die Editierdistanz zum nächstkürzeren Präfix t[:j-1] und fügen das letzte Zeichen t[j-1] am Ende ein 15

16 Rekursive Implementierung Wir können diese rekursive Definition mittels einer rekursiven Methode implementieren 1 public class LevenshteinNaive { 2 3 private int compute(char[] s, int i, char[] t, int j) { 4 if (i == 0) { 5 return j; 6 } else if (j == 0) { 7 return i; 8 } else { 9 int d1 = compute(s, i - 1, t, j - 1) + (s[i - 1]!= t[j - 1]? 1 : 0); 10 int min = d1; int d2 = compute(s, i - 1, t, j) + 1; 13 min = (d2 < min? d2 : min); int d3 = compute(s, i, t, j - 1) + 1; 16 min = (d3 < min? d3 : min); return min; 19 } 20 } public int compute(char[] s, char[] t) { 23 return compute(s, s.length, t, t.length); 24 } 25 } 16

17 Rekursive Implementierung Überlegen wir uns, welche rekursiven Aufrufe der Methode für zwei Zeichenketten s und t der Länge 2 stattfinden c(s,2,t,2) c(s,1,t,2) c(s,0,t,2) c(s,2,t,1) c(s,2,t,0) 17

18 Rekursive Implementierung Die Methode wird also wiederholt mit den gleichen Argumenten aufgerufen, d. h. wir führen die gleiche Berechnung mehrfach durch c(s,2,t,2) c(s,1,t,2) c(s,0,t,2) c(s,2,t,1) c(s,2,t,0) 18

19 Zeit- und Platzkomplexität Überlegen wir nun, wie viele Knoten (d. h. Aufrufe der Methode) es im Aufrufbaum mindestens und höchstens geben kann c(s,2,t,2) c(s,1,t,2) c(s,0,t,2) c(s,2,t,1) 19

20 Zeit- und Platzkomplexität Blattknoten haben eine Tiefe von mindestens min( s, t ), da erst dann i oder j den Wert 0 annehmen können Jeder Knoten kleinerer Tiefe hat drei Kindknoten c(s,2,t,2) c(s,1,t,2) c(s,0,t,2) c(s,2,t,1) 20

21 <latexit sha1_base64="7vfkt9ienqeookek0btz1dursv0=">aaac6xicjvfnb9naen2yrxk+uudgzuwevkqqthsk0gnsjc5ckipe2kq1a603k3trxa+1o24xjn8en8svp8svp8ivng5fpideafd682aednzewkhhmqi+drwrv69dv7fxs3vr9p2793qb9/etlg2hcddsm8ouwzaihwkklhbyggaqlxcqzi+x9ymzmfbo/c1wbcskzxmxe5yho5le6fc4jryjhhdovk1e3mwtljlbllz/jdgsnjy0kkajw6qkfi+cxkn/vzg8fkmvhwx2dkfbcjf+ccjb0ez//jc0szdsdubrvpnsqy5cmmupwqdaugygbzfqdkpsqsf4xuzwxikcfwdieg5aazpqvexgzhtyug531tanjpnsmtbu5khb9ndfzzs1lupdp2j4yi/xlurfa6nwgblurr1fo8jer5glkii1zftuj0af20ut4mwu1yivsoscrwadlzkipksd6vqy4cgrbxg3wq2c8hnmgednczdqhbu/ss7zsxsmo8j/xflj4qi3tutl5qzxlvnro3cw6tprlvzp/w32dwzhmajfpoupryupyaz5rb6tlrks52rmxpe9migcfchfypco8tlvg/fr+7rq9to/nq/iwniffwbisfok</latexit> <latexit sha1_base64="7vfkt9ienqeookek0btz1dursv0=">aaac6xicjvfnb9naen2yrxk+uudgzuwevkqqthsk0gnsjc5ckipe2kq1a603k3trxa+1o24xjn8en8svp8svp8ivng5fpideafd682aednzewkhhmqi+drwrv69dv7fxs3vr9p2793qb9/etlg2hcddsm8ouwzaihwkklhbyggaqlxcqzi+x9ymzmfbo/c1wbcskzxmxe5yho5le6fc4jryjhhdovk1e3mwtljlbllz/jdgsnjy0kkajw6qkfi+cxkn/vzg8fkmvhwx2dkfbcjf+ccjb0ez//jc0szdsdubrvpnsqy5cmmupwqdaugygbzfqdkpsqsf4xuzwxikcfwdieg5aazpqvexgzhtyug531tanjpnsmtbu5khb9ndfzzs1lupdp2j4yi/xlurfa6nwgblurr1fo8jer5glkii1zftuj0af20ut4mwu1yivsoscrwadlzkipksd6vqy4cgrbxg3wq2c8hnmgednczdqhbu/ss7zsxsmo8j/xflj4qi3tutl5qzxlvnro3cw6tprlvzp/w32dwzhmajfpoupryupyaz5rb6tlrks52rmxpe9migcfchfypco8tlvg/fr+7rq9to/nq/iwniffwbisfok</latexit> <latexit sha1_base64="7vfkt9ienqeookek0btz1dursv0=">aaac6xicjvfnb9naen2yrxk+uudgzuwevkqqthsk0gnsjc5ckipe2kq1a603k3trxa+1o24xjn8en8svp8svp8ivng5fpideafd682aednzewkhhmqi+drwrv69dv7fxs3vr9p2793qb9/etlg2hcddsm8ouwzaihwkklhbyggaqlxcqzi+x9ymzmfbo/c1wbcskzxmxe5yho5le6fc4jryjhhdovk1e3mwtljlbllz/jdgsnjy0kkajw6qkfi+cxkn/vzg8fkmvhwx2dkfbcjf+ccjb0ez//jc0szdsdubrvpnsqy5cmmupwqdaugygbzfqdkpsqsf4xuzwxikcfwdieg5aazpqvexgzhtyug531tanjpnsmtbu5khb9ndfzzs1lupdp2j4yi/xlurfa6nwgblurr1fo8jer5glkii1zftuj0af20ut4mwu1yivsoscrwadlzkipksd6vqy4cgrbxg3wq2c8hnmgednczdqhbu/ss7zsxsmo8j/xflj4qi3tutl5qzxlvnro3cw6tprlvzp/w32dwzhmajfpoupryupyaz5rb6tlrks52rmxpe9migcfchfypco8tlvg/fr+7rq9to/nq/iwniffwbisfok</latexit> <latexit sha1_base64="tkzlvqhu6yocucdhr0hhbfgtjj0=">aaac6xicjvflaxrbeo4dx3f9bftopxerior5zau3byhgxysqwu0cmcnq01u76uz39nbdkzjozo/wjl79q179i1619xfxo4jfn3z1vx10dx1zkyxfmpzw8a5dv3hz1sbt7p279+4/6g0+plc6mhxgxettjjjmqyocrihqwlfpgklmwmgwv5rxd8/bwkgld1ixkcg2lcreciaosntng5mm3o4r3qnrjrjfuzw7zgw72/6vydt71tjyao1tpdjgvaxbj/1f4ebepl1+6o/sdspblv0trh64id5zxx662zngy80rbqvyyaw9jsisk4yzffxc240rcyxjozvcmqtlvojjmilobwjq9bkdbvngk2axs5y+dcyytrrxt0c6yh9xnexzw6vmdsqgp/zqbu7+tzzpnspl7nr7dyr8w5kziykyw0ztfml0hb0yku6gssokskio+hlqssupajo3ki6fay6ydobxi9wqkd9lhnf0nnfjhbajrtzlqz6bcuceb+oglr3h1mkdyzw1gxjqbx0h266z5nl/9n/gymepqj96+7y/n1yzteeekydki0tkbdkjr8k+grfovplv5eeheln30fvkfv62ep2v5hfzc+/lt77m8zy=</latexit> Zeit- und Platzkomplexität Es muss damit mindestens 3 min( s, t ) Æ min( s, t ) ÿ i=0 3 i Knoten (d. h. Aufrufe der Methode) im Aufrufbaum geben c(s,2,t,2) c(s,1,t,2) c(s,0,t,2) c(s,2,t,1) 21

22 Zeit- und Platzkomplexität Blattknoten haben eine Tiefe von höchstens s + t - 1, da dann entweder i oder j den Wert 0 angenommen haben muss Jeder Knoten hat höchstens drei Kindknoten c(s,2,t,2) c(s,1,t,2) c(s,0,t,2) c(s,2,t,1) 22

23 <latexit sha1_base64="nrpmywk7zlcjwfykkox/f7cyesa=">aaacrhicdvhbbtqwepwgw1ku3qjvvfiskjbqc2mr2d4grcqll0hf6ravnmnkecdbk3yc2rmgzpmvfa2v8bx8dd4silbayjbonjkjj+dklrqww/d7wlt2/cbnwzu3h3fu3ru/o9p7cgp1btjmujbangfmghqlzfcghppkafozhlosel2un70hy4uut7cpiffswypcciaoskf7sa1v2opxyxfrrmkej2hua7vv898jdqv9qkohf4kmo3hohxxnwsmj+jei/lcp8fqr6em43rss44xmtyisuwtwzqowwqrlbgwx0a3j2klfemgwmgdhxsowsbserqbns112sgqkbnl23+7ou8csak6nuyxsnv1t0tjlbamy16kyxtqrttx5z1qmdyess1vvtyiktxtmjatiddon+4nrh+yvstgfjk0oqxqh5jtb81ps1httav0iaxxl4wdjrrhvuh7jdoponbrgvbanztzlqzgbcuceb5sgrrzh1mkdyzw5gxjqbx0hu6gz5tf+6f/b6yefhx707sv4otl4rhbiy/kepcmreumm5a05jjpcywfyhxwl3zzfo/hmxrjp9qy/nq/jvnj5d5b72rk=</latexit> <latexit sha1_base64="nrpmywk7zlcjwfykkox/f7cyesa=">aaacrhicdvhbbtqwepwgw1ku3qjvvfiskjbqc2mr2d4grcqll0hf6ravnmnkecdbk3yc2rmgzpmvfa2v8bx8dd4silbayjbonjkjj+dklrqww/d7wlt2/cbnwzu3h3fu3ru/o9p7cgp1btjmujbangfmghqlzfcghppkafozhlosel2un70hy4uut7cpiffswypcciaoskf7sa1v2opxyxfrrmkej2hua7vv898jdqv9qkohf4kmo3hohxxnwsmj+jei/lcp8fqr6em43rss44xmtyisuwtwzqowwqrlbgwx0a3j2klfemgwmgdhxsowsbserqbns112sgqkbnl23+7ou8csak6nuyxsnv1t0tjlbamy16kyxtqrttx5z1qmdyess1vvtyiktxtmjatiddon+4nrh+yvstgfjk0oqxqh5jtb81ps1httav0iaxxl4wdjrrhvuh7jdoponbrgvbanztzlqzgbcuceb5sgrrzh1mkdyzw5gxjqbx0hu6gz5tf+6f/b6yefhx707sv4otl4rhbiy/kepcmreumm5a05jjpcywfyhxwl3zzfo/hmxrjp9qy/nq/jvnj5d5b72rk=</latexit> <latexit sha1_base64="nrpmywk7zlcjwfykkox/f7cyesa=">aaacrhicdvhbbtqwepwgw1ku3qjvvfiskjbqc2mr2d4grcqll0hf6ravnmnkecdbk3yc2rmgzpmvfa2v8bx8dd4silbayjbonjkjj+dklrqww/d7wlt2/cbnwzu3h3fu3ru/o9p7cgp1btjmujbangfmghqlzfcghppkafozhlosel2un70hy4uut7cpiffswypcciaoskf7sa1v2opxyxfrrmkej2hua7vv898jdqv9qkohf4kmo3hohxxnwsmj+jei/lcp8fqr6em43rss44xmtyisuwtwzqowwqrlbgwx0a3j2klfemgwmgdhxsowsbserqbns112sgqkbnl23+7ou8csak6nuyxsnv1t0tjlbamy16kyxtqrttx5z1qmdyess1vvtyiktxtmjatiddon+4nrh+yvstgfjk0oqxqh5jtb81ps1httav0iaxxl4wdjrrhvuh7jdoponbrgvbanztzlqzgbcuceb5sgrrzh1mkdyzw5gxjqbx0hu6gz5tf+6f/b6yefhx707sv4otl4rhbiy/kepcmreumm5a05jjpcywfyhxwl3zzfo/hmxrjp9qy/nq/jvnj5d5b72rk=</latexit> <latexit sha1_base64="ybhmlnjzu1q+qcatwiunarffo7k=">aaacrhicdvhbbhmxehwwwwmxpvdii0wehis6lxaj9agpei+8ibwpastltyuvm0mttdcrexzynp0kvozx+ar+buccigvgtntmzbx5pkeopbayxz96wy2bt27f2bnbv3f/wcpdwd6jm6sbw2hmtdtmomawpkhgjailxnqgmcoknbflm2x9/amyk3r1im0nmwlzsswez+ipflcf2kbltryou0u3sbe+ovhodosxvxpsfvtjrw8vbc0hwzg8obrfh0f0b5ce8sqgzbmn+v5vnk41bxruycwzdplenwaogrrcqtdpgws14ywbw4tfnavbzg4owggadrvsycuu2mytvt3rz56z0pk2/lziv+yfcseuta0qfkdiegwv15bkp2uf1iwywm6971cun9fmeklrggza/xojp9prk+jsldlr1q1cxdedzhpjudolb3qqdhcurqemg+fxqfkvm4yjd6qfroquglufrwubxh8rvwujvpaex6enjppmrmqrtq097preml/7p/8hzwdheofj+5fd49hgpb3yhdwlz0lcxpfj8packdhh5av5sr6r70eynaatifu3br2n5jhzimd2e/oy2mu=</latexit> Zeit- und Platzkomplexität Es kann damit höchstens s + t 1 ÿ i=0 Knoten (d. h. Aufrufe der Methode) im Aufrufbaum geben 3 i c(s,2,t,2) c(s,1,t,2) c(s,0,t,2) c(s,2,t,1) 23

24 <latexit sha1_base64="nrpmywk7zlcjwfykkox/f7cyesa=">aaacrhicdvhbbtqwepwgw1ku3qjvvfiskjbqc2mr2d4grcqll0hf6ravnmnkecdbk3yc2rmgzpmvfa2v8bx8dd4silbayjbonjkjj+dklrqww/d7wlt2/cbnwzu3h3fu3ru/o9p7cgp1btjmujbangfmghqlzfcghppkafozhlosel2un70hy4uut7cpiffswypcciaoskf7sa1v2opxyxfrrmkej2hua7vv898jdqv9qkohf4kmo3hohxxnwsmj+jei/lcp8fqr6em43rss44xmtyisuwtwzqowwqrlbgwx0a3j2klfemgwmgdhxsowsbserqbns112sgqkbnl23+7ou8csak6nuyxsnv1t0tjlbamy16kyxtqrttx5z1qmdyess1vvtyiktxtmjatiddon+4nrh+yvstgfjk0oqxqh5jtb81ps1httav0iaxxl4wdjrrhvuh7jdoponbrgvbanztzlqzgbcuceb5sgrrzh1mkdyzw5gxjqbx0hu6gz5tf+6f/b6yefhx707sv4otl4rhbiy/kepcmreumm5a05jjpcywfyhxwl3zzfo/hmxrjp9qy/nq/jvnj5d5b72rk=</latexit> <latexit sha1_base64="nrpmywk7zlcjwfykkox/f7cyesa=">aaacrhicdvhbbtqwepwgw1ku3qjvvfiskjbqc2mr2d4grcqll0hf6ravnmnkecdbk3yc2rmgzpmvfa2v8bx8dd4silbayjbonjkjj+dklrqww/d7wlt2/cbnwzu3h3fu3ru/o9p7cgp1btjmujbangfmghqlzfcghppkafozhlosel2un70hy4uut7cpiffswypcciaoskf7sa1v2opxyxfrrmkej2hua7vv898jdqv9qkohf4kmo3hohxxnwsmj+jei/lcp8fqr6em43rss44xmtyisuwtwzqowwqrlbgwx0a3j2klfemgwmgdhxsowsbserqbns112sgqkbnl23+7ou8csak6nuyxsnv1t0tjlbamy16kyxtqrttx5z1qmdyess1vvtyiktxtmjatiddon+4nrh+yvstgfjk0oqxqh5jtb81ps1httav0iaxxl4wdjrrhvuh7jdoponbrgvbanztzlqzgbcuceb5sgrrzh1mkdyzw5gxjqbx0hu6gz5tf+6f/b6yefhx707sv4otl4rhbiy/kepcmreumm5a05jjpcywfyhxwl3zzfo/hmxrjp9qy/nq/jvnj5d5b72rk=</latexit> <latexit sha1_base64="nrpmywk7zlcjwfykkox/f7cyesa=">aaacrhicdvhbbtqwepwgw1ku3qjvvfiskjbqc2mr2d4grcqll0hf6ravnmnkecdbk3yc2rmgzpmvfa2v8bx8dd4silbayjbonjkjj+dklrqww/d7wlt2/cbnwzu3h3fu3ru/o9p7cgp1btjmujbangfmghqlzfcghppkafozhlosel2un70hy4uut7cpiffswypcciaoskf7sa1v2opxyxfrrmkej2hua7vv898jdqv9qkohf4kmo3hohxxnwsmj+jei/lcp8fqr6em43rss44xmtyisuwtwzqowwqrlbgwx0a3j2klfemgwmgdhxsowsbserqbns112sgqkbnl23+7ou8csak6nuyxsnv1t0tjlbamy16kyxtqrttx5z1qmdyess1vvtyiktxtmjatiddon+4nrh+yvstgfjk0oqxqh5jtb81ps1httav0iaxxl4wdjrrhvuh7jdoponbrgvbanztzlqzgbcuceb5sgrrzh1mkdyzw5gxjqbx0hu6gz5tf+6f/b6yefhx707sv4otl4rhbiy/kepcmreumm5a05jjpcywfyhxwl3zzfo/hmxrjp9qy/nq/jvnj5d5b72rk=</latexit> <latexit sha1_base64="ybhmlnjzu1q+qcatwiunarffo7k=">aaacrhicdvhbbhmxehwwwwmxpvdii0wehis6lxaj9agpei+8ibwpastltyuvm0mttdcrexzynp0kvozx+ar+buccigvgtntmzbx5pkeopbayxz96wy2bt27f2bnbv3f/wcpdwd6jm6sbw2hmtdtmomawpkhgjailxnqgmcoknbflm2x9/amyk3r1im0nmwlzsswez+ipflcf2kbltryou0u3sbe+ovhodosxvxpsfvtjrw8vbc0hwzg8obrfh0f0b5ce8sqgzbmn+v5vnk41bxruycwzdplenwaogrrcqtdpgws14ywbw4tfnavbzg4owggadrvsycuu2mytvt3rz56z0pk2/lziv+yfcseuta0qfkdiegwv15bkp2uf1iwywm6971cun9fmeklrggza/xojp9prk+jsldlr1q1cxdedzhpjudolb3qqdhcurqemg+fxqfkvm4yjd6qfroquglufrwubxh8rvwujvpaex6enjppmrmqrtq097preml/7p/8hzwdheofj+5fd49hgpb3yhdwlz0lcxpfj8packdhh5av5sr6r70eynaatifu3br2n5jhzimd2e/oy2mu=</latexit> Zeit- und Platzkomplexität Wir wissen damit, dass die Laufzeit mindestens so schnell wächst wie 3 min( s, t ) und höchstens so schnell wächst wie s + t 1 ÿ i=0 3 i Die Zeitkomplexität der rekursiven Implementierung liegt damit in O(3 s + t ) 24

25 Zeit- und Platzkomplexität Für einen Knoten (d. h. Methodenaufruf) müssen sich die Zustände aller zu Vorgängerknoten korrespondierenden Methodenaufrufe auf dem Aufrufstapel befinden Da ein Blattknoten höchstens Tiefe s + t -1 hat, sind dies also höchstens s + t Zustände Die Platzkomplexität des Algorithmus liegt damit in O( s + t ) 25

26 Dynamische Programmierung Wir hatten die Lösungsstrategie der dynamischen Programmierung (DP) bereits beim Algorithmus von Floyd und Warshall kennen gelernt Auch bei der Editierdistanz von Levenshtein haben wir es mit einer optimalen Teilstruktur zu tun und können eine optimale Lösung aus optimalen Lösungen zu Teilproblemen bestimmen 26

27 Editierdistanz von Levenshtein Betrachten wir nochmals die rekursive Definition Y d(s[: i 1],t[: j 1]) + 1(s[i 1] = t[j 1]) _] d(s[: i], t[: j]) = min d(s[: i 1],t[: j]) + 1 _[ d(s[: i],t[: j 1]) + 1 Wenn wir die Werte d(s[:i-1], t[:j-1]), d(s[:i-1], t[:j]) und d(s[:i], t[:j-1]) bereits kennen, können wir den Wert d(s[:i], t[:j]) in konstanter Zeit bestimmen 27

28 Implementierung mittels DP Eine bessere Implementierung der Editierdistanz von Levenshtein verwendet dynamische Programmierung initialisiere eine DP-Tabelle D der Größe ( s +1) ( t + 1) (der Eintrag D[i][j] speichert hier die Editierdistanz zwischen den Präfixen s[:i] und t[:j]) fülle die erste Spalte D[:][0] und erste Zeile D[0][:] der DP-Tabelle gemäß der Basisfälle der Definition fülle die verbleibenden Zellen der DP-Tabelle zeilenweise gemäß der rekursiven Definition 28

29 Implementierung mittels DP 1 public class LevenshteinDP { 2 3 private int[][] D; 4 5 public int compute(char[] s, char[] t) { 6 7 // Initialisiere DP-Tabelle 8 D = new int[s.length + 1][t.length + 1]; 9 for ( int i = 0; i <= s.length; i++) { 10 D[i][0] = i; 11 } 12 for ( int j = 0; j <= t.length; j++) { 13 D[0][j] = j; 14 } // Fü lle DP- Tabelle 29

30 <latexit sha1_base64="di2++eawx6nmcfbsarimgw7pcdy=">aaakznicrvzbb9mwfd6dasxcnucnf8oegalazhtgn7rjxaqssenigfiryundzm1ust2nlqp45q/xyxcv8bd44ofjjy1pssfd1d3y8bmfz3ysn/a5vlb9eebeydltp89uzlrnzl+4eglu/vjrgfwex3a8yi/ew5dk5voq7siufpy2fowgrs/eun2hwv/mganjo/cv6sesedb2yfvcowpf0fzslaidcwzawcgebdpa4qbpabbe0eodjxopcjkpcomdwhp0oeakcbupcjnt/qi2uzegp4vzomiqqnmrtruxdgp2owgiom/6hh0+z2qtc0cqgj2osojrfywoshgs7hqbvezb7d9qgy4adglpmdzho45eop9eyujptfxbca9eouzj4+ngbxeeit1aclf7motnqtv4hiiqwqoi3efytm9qqm69ieml+xy4l46q4flog+3t1yzzt+zmtxdwdhgyjp2ri1201lxzbrkhxroomkgpcjtjfxzgfu52nmrlvmibcjujcjttk5y230/gr7atzfd3ovrof0n/on7osfgbnmuciceyuwikbucmhoemzvpe+5luzfj35mbrm5xe9c0soyz9nlgdtjp0hbfefhglorlvegmwmfq4fyhrwd+t9pugi7ag+ptdljwj06okdjfw1tqyl8ftoxzhkodoleen4dnrmvn3ugzo8xfwxpodjkp8nfio5ltfzcjv5osbo3xri2k5fmufpr2zhxex/c8okomipyaky2mofp/cf0nxurdf5qiu/x47x93wwzdg+fnlru/m4mehmcj3ca6zbjpprqk31pjbsufwvdcwzfxxw97cgl1dwl2xl1fj74xttc1vyesqmn/23vxmu96mvf7aqux5vmpdx45vi6fccc9na6vekyymxpe22s61yxoz0ujalaqyev1xnbihdzhsjobdaebuoqrjwpfachux0rxhqgmp+4gllgfv+3jsp4wfojekuoq6cix/onj3kjvozueuokkpnyjoue5uqlorjyshcu+x0eslbfv8oikiv9jikwvmkb+pdpueryiit08f9rr+y1l145judisual2xcfzz2ot+bs9gacipaz5v7h0tqo9ivpedwlg1q/zjdob1utwxq87lpywtlxspoalx4ayedafuwxy8xvfndnivt5uvla+vb9a2dwanra+p6ymzzockjp2sjz8bdyfsgq==</latexit> <latexit sha1_base64="di2++eawx6nmcfbsarimgw7pcdy=">aaakznicrvzbb9mwfd6dasxcnucnf8oegalazhtgn7rjxaqssenigfiryundzm1ust2nlqp45q/xyxcv8bd44ofjjy1pssfd1d3y8bmfz3ysn/a5vlb9eebeydltp89uzlrnzl+4eglu/vjrgfwex3a8yi/ew5dk5voq7siufpy2fowgrs/eun2hwv/mganjo/cv6sesedb2yfvcowpf0fzslaidcwzawcgebdpa4qbpabbe0eodjxopcjkpcomdwhp0oeakcbupcjnt/qi2uzegp4vzomiqqnmrtruxdgp2owgiom/6hh0+z2qtc0cqgj2osojrfywoshgs7hqbvezb7d9qgy4adglpmdzho45eop9eyujptfxbca9eouzj4+ngbxeeit1aclf7motnqtv4hiiqwqoi3efytm9qqm69ieml+xy4l46q4flog+3t1yzzt+zmtxdwdhgyjp2ri1201lxzbrkhxroomkgpcjtjfxzgfu52nmrlvmibcjujcjttk5y230/gr7atzfd3ovrof0n/on7osfgbnmuciceyuwikbucmhoemzvpe+5luzfj35mbrm5xe9c0soyz9nlgdtjp0hbfefhglorlvegmwmfq4fyhrwd+t9pugi7ag+ptdljwj06okdjfw1tqyl8ftoxzhkodoleen4dnrmvn3ugzo8xfwxpodjkp8nfio5ltfzcjv5osbo3xri2k5fmufpr2zhxex/c8okomipyaky2mofp/cf0nxurdf5qiu/x47x93wwzdg+fnlru/m4mehmcj3ca6zbjpprqk31pjbsufwvdcwzfxxw97cgl1dwl2xl1fj74xttc1vyesqmn/23vxmu96mvf7aqux5vmpdx45vi6fccc9na6vekyymxpe22s61yxoz0ujalaqyev1xnbihdzhsjobdaebuoqrjwpfachux0rxhqgmp+4gllgfv+3jsp4wfojekuoq6cix/onj3kjvozueuokkpnyjoue5uqlorjyshcu+x0eslbfv8oikiv9jikwvmkb+pdpueryiit08f9rr+y1l145judisual2xcfzz2ot+bs9gacipaz5v7h0tqo9ivpedwlg1q/zjdob1utwxq87lpywtlxspoalx4ayedafuwxy8xvfndnivt5uvla+vb9a2dwanra+p6ymzzockjp2sjz8bdyfsgq==</latexit> <latexit sha1_base64="di2++eawx6nmcfbsarimgw7pcdy=">aaakznicrvzbb9mwfd6dasxcnucnf8oegalazhtgn7rjxaqssenigfiryundzm1ust2nlqp45q/xyxcv8bd44ofjjy1pssfd1d3y8bmfz3ysn/a5vlb9eebeydltp89uzlrnzl+4eglu/vjrgfwex3a8yi/ew5dk5voq7siufpy2fowgrs/eun2hwv/mganjo/cv6sesedb2yfvcowpf0fzslaidcwzawcgebdpa4qbpabbe0eodjxopcjkpcomdwhp0oeakcbupcjnt/qi2uzegp4vzomiqqnmrtruxdgp2owgiom/6hh0+z2qtc0cqgj2osojrfywoshgs7hqbvezb7d9qgy4adglpmdzho45eop9eyujptfxbca9eouzj4+ngbxeeit1aclf7motnqtv4hiiqwqoi3efytm9qqm69ieml+xy4l46q4flog+3t1yzzt+zmtxdwdhgyjp2ri1201lxzbrkhxroomkgpcjtjfxzgfu52nmrlvmibcjujcjttk5y230/gr7atzfd3ovrof0n/on7osfgbnmuciceyuwikbucmhoemzvpe+5luzfj35mbrm5xe9c0soyz9nlgdtjp0hbfefhglorlvegmwmfq4fyhrwd+t9pugi7ag+ptdljwj06okdjfw1tqyl8ftoxzhkodoleen4dnrmvn3ugzo8xfwxpodjkp8nfio5ltfzcjv5osbo3xri2k5fmufpr2zhxex/c8okomipyaky2mofp/cf0nxurdf5qiu/x47x93wwzdg+fnlru/m4mehmcj3ca6zbjpprqk31pjbsufwvdcwzfxxw97cgl1dwl2xl1fj74xttc1vyesqmn/23vxmu96mvf7aqux5vmpdx45vi6fccc9na6vekyymxpe22s61yxoz0ujalaqyev1xnbihdzhsjobdaebuoqrjwpfachux0rxhqgmp+4gllgfv+3jsp4wfojekuoq6cix/onj3kjvozueuokkpnyjoue5uqlorjyshcu+x0eslbfv8oikiv9jikwvmkb+pdpueryiit08f9rr+y1l145judisual2xcfzz2ot+bs9gacipaz5v7h0tqo9ivpedwlg1q/zjdob1utwxq87lpywtlxspoalx4ayedafuwxy8xvfndnivt5uvla+vb9a2dwanra+p6ymzzockjp2sjz8bdyfsgq==</latexit> <latexit sha1_base64="9rsfddbsw/4zonmgjvsh4aj+klm=">aaakznicrvzbb9mwfd7jwsjtg0dedbnicgit9oexqeniijcgncq2egs1oanbuc1ntjsoucurf4gfg3ifv8atdxw7aum7fdje3smfn/v5bcdxy59lzdtffo4dp3hy1onkgevsufmxli4uxdqr0ub4bnul/ei8calkpg/ztulkz29iwwjg+uy123+s9a8pmja8cl+pycxaae2gvmm9qlaulz24au1wguexoisqqa8ohccnwiiybqjzuembqfjrlneq2espa6qqv/ugknpeg7cfugq9lzzteynany6oryixu7allumefe7p2odzpty6dwsb0ekok7jex4giiyhhtrhjyxtcpftlenrwehiostnacfts+sqsq39mqtqco/aknrobhwcrilob9bapro27xg8sqsyjrfqvvkxgfpjjelzzdfclmnswb4hzygqjnuw00t5dptdr2zyp9haomq6zsx93syuwujbbipfqebzvmypvyw+qwt6kwtnou23zcm1tyw9syw9uhfp2+yn8zhay7p7or9/5b+jpx885mn7zs0wj8qqzsoyk4iojr6cns77xfizvmfytudn6zqv3fb1ejnefbewg7sq9yqqrh9+cxm6v3oavjd5trebq1ves/brhckybpmu3c0/cvkocw6v1tq3g5xhbhb9y5rin8qgrpgcdm+se18wppgqo9t/gombpkyvcvvuvlpkdnhx9km9tii2hb/mzp2n28c52/xlfzvdkr0sxmyvi8sn8nxqbhsg2cld8e+x8dennxrrht5uvpzmln4xcodzaocyyzt67it5s028nhvlt01i0818ne4vldrv+b9vu3cohgadqm98yzl+tvawfbrmdeyoahcrzqzs7jh2rvkkf4p7prlzziflmvt7tsl1qxzrmopv0wrqwjybtamrdgjdzssyh0yhcr0mbdckbfcpiphmphazsdgmxlqoq9uwstgsldw4u9rv15vt+rph+h1sioz+7goohdikid3kmutvzbsu8jaekhv5aagfgexur/zvg2lwwt/ldzkgnoejbvh0qqkfww85qgsekti1xveu7tocf114ma3sxchbowfopyu9raxphsorsymktgenp5jm79apjv52x9evhq9kmveakxmod7sbdeatp8nw5dv7lc+vr5vvlu7vlhvgj62nqemwh87kmuz/r0y9qjnhf</latexit> Implementierung mittels DP // Fü lle DP- Tabelle 17 for ( int i = 1; i <= s.length; i++) { 18 for ( int j = 1; j <= t.length; j++) { // Ersetzen des letzten Zeichens? 21 int d1 = D[i - 1][j - 1] + (s[i - 1]!= t[j - 1]? 1 : 0); 22 int min = d1; // Lö schen des letzten Zeichens aus s[:j] 25 int d2 = D[i - 1][j] + 1; 26 min = (d2 < min? d2 : min); // Einfü gen des letzten Zeichens aus t[:i] 29 int d3 = D[i][j - 1] + 1; 30 min = (d3 < min? d3 : min); D[i][j] = min; 33 } 34 } return D[s.length][t.length]; 37 } 38 } 30

31 Implementierung mittels DP Beispiel: Berechnen der Editierdistanz zwischen s = a f f e t = a p f e l _ a p f e l _ a f f e 31

32 Implementierung mittels DP Beispiel: Berechnen der Editierdistanz zwischen s = a f f e t = a p f e l _ a p f e l 0 _ a 1 2 f 2 3 f 3 4 e 4 Initialisierung 32

33 Implementierung mittels DP Beispiel: Berechnen der Editierdistanz zwischen s = a f f e t = a p f e l _ a p f e l 0 _ a f f e Füllen der DP-Tabelle 33

34 Zeit- und Platzkomplexität Die Implementierung mittels dynamischer Programmierung füllt jede Zelle der DP-Tabelle einmal Hierbei wird auf drei benachbarte Zellen zugegriffen und die letzte Zeichen der aktuellen Präfixe verglichen Die Zeitkomplexität liegt damit in O( s t ) Die Platzkomplexität zum Speichern der DP-Tabelle liegt ebenfalls in O( s t ) 34

35 Backtracking Aus der gefüllten DP-Tabelle lässt sich mittels so genanntem Backtracking eine Folge von Editieroperationen minimaler Länge ablesen beginne in rechter unterer Zelle D[ s ][ t ] der DP-Tabelle wandere zur linken oberen Zelle D[0][0] der DP-Tabelle und stelle in jedem Schritt fest, wie der Wert zustande gekommen ist betrachte in der Zelle D[i][j] hierzu die drei benachbarten Zellen D[i-1][j-1], D[i-1][j] und D[i][j-1] und stelle fest, welche Editieroperation ausgeführt worden ist 35

36 Backtracking Beispiel: Berechnen einer Folge von Editieroperationen für s = a f f e t = a p f e l _ a p f e l 0 _ a f Ersetze f durch p 3 f e Füge l ein 36

37 Zusammenfassung Editierdistanz von Levenshtein bestimmt Distanz zwischen zwei Zeichenketten s und t als minimale Anzahl von Editieroperationen, die nötig ist, um s in t umzuwandeln Editierdistanz lässt sich rekursiv definieren; rekursive Implementierung hat jedoch exponentielle Laufzeit Geschicktere Implementierung mittels dynamischer Programmierung hat Zeit- und Platzkomplexität in O( s t ) 37

38 Literatur [1] G. Saake und K.-U. Sattler: Algorithmen und Datenstrukturen, dpunkt.verlag, 2013 (Kapitel 17) 38

Rückblick: Längste gemeinsame Zeichenkette

Rückblick: Längste gemeinsame Zeichenkette aaadg3icdvjdb9mwfhuwbin8bcablxytanngm5rjbjogkvhcc9kq6dapjirhvu3donfmoxvbyn/gff4z/wyngrib48pjjs/98m25tgrbtqndx96kf2f17r21+8gdh48ep1nfehqizakyjjguup0lvipgoywmnwlocgu0swscjsspjf/0aptmmv9iqglijky5n3fgjammg55pforwywsw0xxqcvwkvtoomgxe20edkiyaucqsygsiy1m9pcehpn4148nfvi2pmbewm8qgjigu57bnry0bwnje0ulh+65zhyt4neyupstkagavokg6fneb3zfbs5imgpwyv4lithi4x2a8adg5vrhna1tx3228g6p/fju6qhqqcl/zdrkqxdo56u3wn8pe4ga/fhua/wvrl2xtc/gctxbszevjvliyg9wwqbuer2fhylfwccbafs41fjqtaqpjgha0abxbfgqgrlxx3q7mnamd23aanx7lmcmesewe3ocw/tvd0kzrkktczkoivulryft9izrlqxn97xxr+pjbxzri8errvtucyut9o1mz248tz4vsqm66rmelwebi5mrhkvfajkgcoexxjwvmc6oom+4cbqrntp2rdrv+mghlfu9/qvqtwhfott0x1mdxfuaype45wadunh/0x/8hj4nefpaiz3ubw/1urmgnvuav0rak0ds0rb/rmroh5i28794p76e/6u/4a3+vc13xrnkeowvmh/0gfb8bjw==

Mehr

19. Dynamic Programming I

19. Dynamic Programming I 495 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.

Mehr

19. Dynamic Programming I

19. Dynamic Programming I 495 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.

Mehr

5.5 Prioritätswarteschlangen

5.5 Prioritätswarteschlangen 5.5 Prioritätswarteschlangen LIFO- und FIFO-Warteschlangen entfernen Werte aus der Warteschlange in Abhängigkeit davon, wann sie in diese eingefügt wurden Prioritätswartschlangen interpretieren die Werte

Mehr

Dynamische Programmierung

Dynamische Programmierung Dynamische Programmierung Claudia Gerhold 9.5.6 Claudia Gerhold Dynamische Programmierung 9.5.6 / 4 Agenda Einführung Dynamische Programmierung Top-Down Ansatz mit Memoization Bottom-Up Ansatz 3 Anwendungsbeispiele

Mehr

Anwendungsbeispiel MinHeap

Anwendungsbeispiel MinHeap Anwendungsbeispiel MinHeap Uns seien n ganze Zahlen gegeben und wir möchten darin die k größten Zahlen bestimmen; zudem gelten, dass n deutlich größer als k ist Wir können das Problem mit Laufzeit in O(n

Mehr

Algorithmen auf Sequenzen

Algorithmen auf Sequenzen Algorithmen auf Sequenzen Fehlertolerante Mustersuche: Distanz- und Ähnlichkeitsmaße Sven Rahmann Genominformatik Universitätsklinikum Essen Universität Duisburg-Essen Universitätsallianz Ruhr Einführung

Mehr

Informatik II: Algorithmen und Datenstrukturen SS 2013

Informatik II: Algorithmen und Datenstrukturen SS 2013 Informatik II: Algorithmen und Datenstrukturen SS 2013 Vorlesung 11b, Mittwoch, 3. Juli 2013 (Editierdistanz, dynamische Programmierung) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen

Mehr

19. Dynamic Programming I

19. Dynamic Programming I Fibonacci Zahlen 9. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixettenmultipliation, Matrixmultipliation nach Strassen [Ottman/Widmayer,

Mehr

19. Dynamic Programming I

19. Dynamic Programming I 502 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.

Mehr

Suchen in Texten. Naives Suchen Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuchen Editierdistanz

Suchen in Texten. Naives Suchen Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuchen Editierdistanz Suchen in Texten Naives Suchen Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuchen Editierdistanz Textsuche Gegeben ist ein Zeichensatz (Alphabet) Σ. Für einen Text T Σ n und

Mehr

Kapitel 5: Dynamisches Programmieren Gliederung

Kapitel 5: Dynamisches Programmieren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Algorithmische Bioinformatik 1

Algorithmische Bioinformatik 1 Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen

Mehr

Algorithmen und Datenstrukturen in der Bioinformatik Erstes Übungsblatt WS 05/06 Musterlösung

Algorithmen und Datenstrukturen in der Bioinformatik Erstes Übungsblatt WS 05/06 Musterlösung Konstantin Clemens Johanna Ploog Freie Universität Berlin Institut für Mathematik II Arbeitsgruppe für Mathematik in den Lebenswissenschaften Algorithmen und Datenstrukturen in der Bioinformatik Erstes

Mehr

Effiziente Algorithmen 2

Effiziente Algorithmen 2 Effiziente Algorithmen 2 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen

Mehr

Algorithmische Bioinformatik 1

Algorithmische Bioinformatik 1 Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen

Mehr

HS: Angewandte Linguistische Datenverarbeitung Prof. Dr. Rolshoven Universität zu Köln. Edit distance. Referentinnen: Alena Geduldig, Kim Opgenoorth

HS: Angewandte Linguistische Datenverarbeitung Prof. Dr. Rolshoven Universität zu Köln. Edit distance. Referentinnen: Alena Geduldig, Kim Opgenoorth HS: Angewandte Linguistische Datenverarbeitung Prof. Dr. Rolshoven Universität zu Köln Edit distance Referentinnen: Alena Geduldig, Kim Opgenoorth inexact matching Problem Erkenne, finde und toleriere

Mehr

Das Problem des Handlungsreisenden

Das Problem des Handlungsreisenden Seite 1 Das Problem des Handlungsreisenden Abbildung 1: Alle möglichen Rundreisen für 4 Städte Das TSP-Problem tritt in der Praxis in vielen Anwendungen als Teilproblem auf. Hierzu gehören z.b. Optimierungsprobleme

Mehr

2.2 Der Algorithmus von Knuth, Morris und Pratt

2.2 Der Algorithmus von Knuth, Morris und Pratt Suchen in Texten 2.1 Grundlagen Ein Alphabet ist eine endliche Menge von Symbolen. Bsp.: Σ a, b, c,..., z, Σ 0, 1, Σ A, C, G, T. Wörter über Σ sind endliche Folgen von Symbolen aus Σ. Wörter werden manchmal

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe

Mehr

Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung. Sebastian Küpper

Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung. Sebastian Küpper Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung Sebastian Küpper Redundanz Rekursiver Lösungen Rekursion kann elegante Bescheibungen zur Problemlösung ergeben

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 20 (23.7.2014) All Pairs Shortest Paths, String Matching (Textsuche) Algorithmen und Komplexität Vorlesungsevaluation Sie sollten alle eine

Mehr

3.3 Laufzeit von Programmen

3.3 Laufzeit von Programmen 3.3 Laufzeit von Programmen Die Laufzeit eines Programmes T(n) messen wir als die Zahl der Befehle, die für die Eingabe n abgearbeitet werden Betrachten wir unser Programm zur Berechnung von Zweierpotenzen,

Mehr

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1

Mehr

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

1. Die rekursive Datenstruktur Liste

1. Die rekursive Datenstruktur Liste 1. Die rekursive Datenstruktur Liste 1.4 Methoden der Datenstruktur Liste Die Warteschlange (Queue) ist ein Sonderfall der Datenstruktur Liste. Bei der Warteschlange werden Einfügen und Entfernen nach

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 21 (15.7.2016) String Matching (Textsuche) Approximate String Matching Algorithmen und Komplexität Textsuche / String Matching Gegeben:

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale

Mehr

Übersicht. 4.1 Ausdrücke. 4.2 Funktionale Algorithmen. 4.3 Anweisungen. 4.4 Imperative Algorithmen Variablen und Konstanten. 4.4.

Übersicht. 4.1 Ausdrücke. 4.2 Funktionale Algorithmen. 4.3 Anweisungen. 4.4 Imperative Algorithmen Variablen und Konstanten. 4.4. Übersicht 4.1 Ausdrücke 4.2 Funktionale Algorithmen 4.3 Anweisungen 4.4 Imperative Algorithmen 4.4.1 Variablen und Konstanten 4.4.2 Prozeduren 4.4.3 Verzweigung und Iteration 4.4.4 Globale Größen Einführung

Mehr

Algorithmen & Datenstrukturen Midterm Test 2

Algorithmen & Datenstrukturen Midterm Test 2 Algorithmen & Datenstrukturen Midterm Test 2 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann

Mehr

Informatik Abitur Bayern 2017 / II - Lösung

Informatik Abitur Bayern 2017 / II - Lösung Informatik Abitur Bayern 2017 / II - Lösung Autoren: Wolf (1) Wagner (2) Scharnagl (3-5) 1a 5 1b Diese Methode vergleicht den Namen des Interpreten eines jeden Elements der Liste mit dem gegebenen Namen.

Mehr

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen

1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen 1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ ] ( ) Infix-Operator Methodenaufruf new

Mehr

Wir nennen einen Pfad in einem gerichteten Graphen Zyklus, wenn der Pfad im gleichen Knoten beginnt und endet, d. h.

Wir nennen einen Pfad in einem gerichteten Graphen Zyklus, wenn der Pfad im gleichen Knoten beginnt und endet, d. h. aaacmxicdvdlsgmxfl1t3/vv69jntaiuyowubbdcwy1lbfuqwkomtwuyzgri7ltgwa9wa7/cr+lo3potpq2c9xegcdjnxu7j8wmpdlru2mktlc4tr6yu5dc3nre2czvfhlgjzrzolfs65vpdpyh4hqvk3oo1p6evedmpzid+c8i1esq6xjtmnzaoitexjkkvbozdl5yrytfofkpu+bhacu+q5dfxyu4updp+pkobwgv3xyne9hrlqh4hk9sytufg2mmorsekf8zfjobhlav0wnuwrjtkppnnez+sq6v0sf9p+yiku/x7rkzdy9lqt5mhxtvz05uif3q+ugfs38zdz1aedznlwqtwndwpjarvvfmrfpuvtiaioeeesvnqfiijkjkpj/se5gxlagllwti/enzhnwvos87bfr+qiv+txnhzc8velveqvwcgvdidazgcd06hbhdwcxvgemitpmpiexhgzqvznhvnoz87uzah5/0djy+sia==

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen Lerneinheit : Dynamisches Programmieren Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester.. Einleitung Diese Lerneinheit widmet sich einer

Mehr

WS18 Algorithmen und Datenstrukturen 11. Kapitel Dynamische Programmierung

WS18 Algorithmen und Datenstrukturen 11. Kapitel Dynamische Programmierung WS18 Algorithmen und Datenstrukturen 11. Kapitel Dynamische Programmierung Martin Dietzfelbinger Januar 2019 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen 1 WS 2018/19 Kapitel 11 Kapitel 11: Dynamische

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 14, Donnerstag, 5.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 14, Donnerstag, 5. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 14, Donnerstag, 5. Februar 2015 (Editierdistanz, dynamische Programmierung) Junior-Prof.

Mehr

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems 4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um

Mehr

Einfache binäre Suchbäume können entarten, so dass sich die Tiefen ihrer Blattknoten stark unterscheiden

Einfache binäre Suchbäume können entarten, so dass sich die Tiefen ihrer Blattknoten stark unterscheiden 5.6.2 AVL-Bäume Einfache binäre Suchbäume können entarten, so dass sich die Tiefen ihrer Blattknoten stark unterscheiden AVL-Bäume, benannt nach ihren Erfindern G. M. Adelson- Velskii und E. M. Landis,

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 14, Donnerstag, 6.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 14, Donnerstag, 6. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 14, Donnerstag, 6. Februar 2014 (Editierdistanz, dynamische Programmierung) Junior-Prof.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 25. Vorlesung Dynamisches Programmieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Klausurvorbereitung Tipp: Schreiben Sie sich alle Fragen

Mehr

Kapitel 12: Induktive

Kapitel 12: Induktive Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

Mehr

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik 5. Datenstrukturen Motivation Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik Eine Datenstruktur speichert gegebene Daten und stellt auf diesen bestimmte Operationen

Mehr

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 15 P Hinweise: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern

Mehr

Übungsblatt 7 - Voronoi Diagramme

Übungsblatt 7 - Voronoi Diagramme Karlsruher Institut für Technologie Algorithmische Geometrie Fakultät für Informatik Sommersemester 2012 ITI Wagner Martin Nöllenburg/Andreas Gemsa Übungsblatt 7 - Voronoi Diagramme 1 Voronoi-Zellen Sei

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen Lerneinheit : Kürzeste Pfade in Graphen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 016.6.01 Einleitung Diese Lerneinheit beschäftigt

Mehr

Aufgabenblatt 4. Silke Trißl Wissensmanagement in der Bioinformatik

Aufgabenblatt 4. Silke Trißl Wissensmanagement in der Bioinformatik Aufgabenblatt 4 Silke Trißl Wissensmanagement in der Bioinformatik Zuerst! FRAGEN? Silke Trißl: Bioinformatik für Biophysiker 2 Exercise 1 Global alignment using dynamic programming Write a program to

Mehr

Algorithmen und Datenstrukturen in der Bioinformatik Drittes Übungsblatt WS 05/06 Musterlösung

Algorithmen und Datenstrukturen in der Bioinformatik Drittes Übungsblatt WS 05/06 Musterlösung Konstantin Clemens Johanna Ploog Freie Universität Berlin Institut für Mathematik II Arbeitsgruppe für Mathematik in den Lebenswissenschaften Algorithmen und Datenstrukturen in der Bioinformatik Drittes

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Lerneinheit 3: Greedy Algorithmen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 2016 10.5.2016 Einleitung Einleitung Diese Lerneinheit

Mehr

{0,1} rekursive Aufteilung des Datenraums in die Quadranten NW, NE, SW und SE feste Auflösung des Datenraums in 2 p 2 p Gitterzellen

{0,1} rekursive Aufteilung des Datenraums in die Quadranten NW, NE, SW und SE feste Auflösung des Datenraums in 2 p 2 p Gitterzellen 4.4 MX-Quadtrees (I) MatriX Quadtree Verwaltung 2-dimensionaler Punkte Punkte als 1-Elemente in einer quadratischen Matrix mit Wertebereich {0,1} rekursive Aufteilung des Datenraums in die Quadranten NW,

Mehr

Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Präsenzübung Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Dienstag, 28. Mai 2013 Nachname: Vorname: Matrikelnummer: Studiengang:

Mehr

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Präsenzübung Musterlösung Dienstag, 28.05.2013 Aufgabe 1 (Allgemeine Fragen [20 Punkte]) 1. Tragen Sie in der folgenden Tabelle die Best-, Average- und Worst-Case-

Mehr

Ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei

Ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei 7/7/ Das Rucksack-Problem Englisch: Knapsack Problem Das Problem: "Die Qual der Wahl" Ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei Im Ladens

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 10 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 13. Juni 2018 [Letzte Aktualisierung: 12/06/2018,

Mehr

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Präsenzübung Datenstrukturen und Algorithmen SS 2014 Prof. aa Dr. E. Ábrahám F. Corzilius, S. Schupp, T. Ströder Präsenzübung Datenstrukturen und Algorithmen SS 2014 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik

Mehr

Algorithmen und Komplexität

Algorithmen und Komplexität Algorithmen und Komplexität Dynamische Programmierung Markus Ullrich Norbert Baum Fachbereich Informatik - IIb07 Hochschule Zittau/Görlitz 28. Mai 2009 1 / 29 Wie sieht es mit langen Ketten aus? A 1 A

Mehr

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Andreas Moser Dietmar Ebner Christian Schauer Markus Bauer 9. Dezember 2003 1 Einführung Der in der Vorlesung gezeigte Algorithmus für das Steiner

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 05 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen Grundlagen

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (12 Hashverfahren: Verkettung der Überläufer) Prof. Dr. Susanne Albers Möglichkeiten der Kollisionsbehandlung Kollisionsbehandlung: Die Behandlung

Mehr

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, 13.00-14.45 Uhr Bearbeitungszeit: 105 Minuten Schalten Sie ihr Mobiltelefon aus. Bei der Klausur ist als einziges

Mehr

Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung Informatik I: Einführung in die Programmierung 7. Albert-Ludwigs-Universität Freiburg Bernhard Nebel 31. Oktober 2014 1 31. Oktober 2014 B. Nebel Info I 3 / 20 Um zu, muss man zuerst einmal. Abb. in Public

Mehr

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung Übersicht Datenstrukturen und Algorithmen Vorlesung 13: 1 Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 2 Effizienz

Mehr

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen. Wiederholung Baum: Gerichteter Graph, der die folgenden drei Bedingungen erfüllt: Es gibt einen Knoten, der nicht Endknoten einer Kante ist. (Dieser Knoten heißt Wurzel des Baums.) Jeder andere Knoten

Mehr

0 i = n w n > k v n. V (i +1,k), max v i + V (i +1,k w i )

0 i = n w n > k v n. V (i +1,k), max v i + V (i +1,k w i ) Sei V(i,k) der maximal mögliche Wert für die egenstände i, i+1,, n bei gegebener max. Kapazität k V(i,k) kann dann für i n geschrieben werden als i = n w n > k v n V (i, k) = V (i +1,k) V (i +1,k), max

Mehr

Klausur Algorithmen und Datenstrukturen II

Klausur Algorithmen und Datenstrukturen II Technische Universität Braunschweig Sommersemester 2017 Institut für Betriebssysteme und Rechnerverbund Abteilung Algorithmik Prof. Dr. Sándor P. Fekete Arne Schmidt Klausur Algorithmen und Datenstrukturen

Mehr

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung

Hashing II. Übersicht. 1 Hashing und Verkettung. 2 Offene Adressierung Übersicht Datenstrukturen und Algorithmen Vorlesung 13: 1 Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group https://moves.rwth-aachen.de/teaching/ss-18/dsal/ 2 Effizienz

Mehr

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12 Grundlagen der Algorithmen und Datenstrukturen Kapitel 12 Christian Scheideler + Helmut Seidl SS 2009 28.06.09 Kapitel 12 1 Generische Optimierungsverfahren Techniken: Systematische Suche lass nichts aus

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Technische Universität München SoSe 2017 Fakultät für Informatik, I-16 Lösungsblatt 4 Dr. Stefanie Demirci 31. Mai 2017 Rüdiger Göbl, Mai Bui Algorithmen und Datenstrukturen Aufgabe 1 Komplexität Berechnung

Mehr

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Proseminar String Matching

Proseminar String Matching Proseminar Textsuche Proseminar String Matching PD Dr. habil. Hanjo Täubig Lehrstuhl für Theoretische Informatik (Prof. Dr. Susanne Albers) Institut für Informatik Technische Universität München Wintersemester

Mehr

10. Übungsblatt zu Algorithmen I im SS 2010

10. Übungsblatt zu Algorithmen I im SS 2010 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders G.V. Batz, C. Schulz, J. Speck 0. Übungsblatt zu Algorithmen I im SS 00 http//algo.iti.kit.edu/algorithmeni.php

Mehr

Wiederholung. Divide & Conquer Strategie

Wiederholung. Divide & Conquer Strategie Wiederholung Divide & Conquer Strategie Binäre Suche O(log n) Rekursives Suchen im linken oder rechten Teilintervall Insertion-Sort O(n 2 ) Rekursives Sortieren von a[1..n-1], a[n] Einfügen von a[n] in

Mehr

Klausur "ADP" WS 2013/2014

Klausur ADP WS 2013/2014 PD Dr. J. Reischer 4.2.2014 Klausur "ADP" WS 2013/2014 Nachname, Vorname Abschluss (BA, MA, FKN etc.) Matrikelnummer, Semester Versuch (1/2/3) Bitte füllen Sie zuerst den Kopf des Angabenblattes aus! Die

Mehr

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Übungsblatt 10 Abgabe: Montag, 08.07.2013, 14:00 Uhr Die Übungen sollen in Gruppen von zwei bis drei Personen bearbeitet werden. Schreiben Sie die Namen jedes

Mehr

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Editierdistanz Autor: Sven Schuierer

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Editierdistanz Autor: Sven Schuierer Algorithmen und Dtenstrukturen (Th. Ottmnn und P. Widmyer) Folien: Editierdistnz Autor: Sven Schuierer Institut für Informtik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg 1 Editier-Distnz Gegeben:

Mehr

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 12/13 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems 4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um

Mehr

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff. Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit

Mehr

Algorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin

Algorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin Departement Mathematik und Informatik Algorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin 12. April 2017 Union-Find Datenstruktur Graphen I Robert E. Tarjan Algorithmen und Datenstrukturen,

Mehr

Chapter A. Korrekte Programme. Korrektes Programm. Lecture Algorithmen & Datenstrukturen

Chapter A. Korrekte Programme. Korrektes Programm. Lecture Algorithmen & Datenstrukturen Chapter A Lecture Algorithmen & Datenstrukturen.09.01 Berner Fachhochschule Technik und Informatik A.1 Das Programm endet nach endlich viel Zeit. Das Programm endet nach endlich viel Zeit. Damit dies erfüllt

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 22 (20.7.2016) Greedy Algorithmen - Datenkompression Algorithmen und Komplexität Greedy Algorithmen Greedy Algorithmen sind eine Algorithmenmethode,

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 2. April

Mehr

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute Wiederholung: Zusammenfassung Felder Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Ein Feld A kann repräsentiert

Mehr

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure 7. Dynamische Datenstrukturen Bäume Informatik II für Verkehrsingenieure Übersicht dynamische Datenstrukturen Wozu? Oft weiß man nicht von Beginn an, wieviele Elemente in einer Datenstruktur untergebracht

Mehr

Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe)

Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe) Humboldt-Universität zu Berlin Institut für Informatik Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe) Übungsblatt 4: Felder und Rekursion Abgabe: bis 9:00 Uhr am 14.12.2015 über Goya

Mehr

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 29.05.2011 Das Postamt-Problem b(p, q) = {x R 2 : xp = xq } p q h(p, q) h(q, p) = {x :

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Tobias Lieber Sommersemester 011 Übungsblatt 30. Mai 011 Grundlagen: Algorithmen und Datenstrukturen

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 18 (25.6.2018) Dynamische Programmierung II Algorithmen und Komplexität Fibonacci Zahlen Definition der Fibonacci Zahlen F 0, F 1, F 2,

Mehr

5.3 Doppelt verkettete Listen

5.3 Doppelt verkettete Listen 5.3 Doppelt verkettete Listen Einfach verkettete Listen unterstützen das Einfügen und Löschen am Anfang in konstanter Zeit; für das Einfügen und Löschen am Ende benötigen sie jedoch lineare Laufzeit Doppelt

Mehr

Übersicht. Aktivitäten-Auswahl-Problem. Greedy Algorithmen. Aktivitäten-Auswahl-Problem. Aktivitäten-Auswahl-Problem. Datenstrukturen & Algorithmen

Übersicht. Aktivitäten-Auswahl-Problem. Greedy Algorithmen. Aktivitäten-Auswahl-Problem. Aktivitäten-Auswahl-Problem. Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Übersicht Greedy Algorithmen Einführung Aktivitäten-Auswahl-Problem Huffman Codierung Matthias Zwicker Universität Bern Frühling 2009 2 Greedy Algorithmen Entwurfsstrategie

Mehr

ADS: Algorithmen und Datenstrukturen

ADS: Algorithmen und Datenstrukturen ADS: Algorithmen und Datenstrukturen Teil X Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 13.

Mehr

Lösungsvorschlag Serie 2 Rekursion

Lösungsvorschlag Serie 2 Rekursion (/) Lösungsvorschlag Serie Rekursion. Algorithmen-Paradigmen Es gibt verschiedene Algorithmen-Paradigmen, also grundsätzliche Arten, wie man einen Algorithmus formulieren kann. Im funktionalen Paradigma

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen

Mehr