6. Algorithmen auf Zeichenketten
|
|
- Elsa Irmgard Siegel
- vor 5 Jahren
- Abrufe
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
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==
Mehr19. 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.
Mehr19. 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.
Mehr5.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
MehrDynamische 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
MehrAnwendungsbeispiel 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
MehrAlgorithmen 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
MehrInformatik 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
Mehr19. 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,
Mehr19. 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.
MehrSuchen 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
MehrKapitel 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
MehrAlgorithmische 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
MehrAlgorithmen 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
MehrEffiziente 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
MehrAlgorithmische 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
MehrHS: 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
MehrDas 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
Mehr2.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
MehrAlgorithmen 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
MehrEinfü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
MehrInformatik 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
Mehr3.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,
MehrAlgorithmen 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 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck
Mehr1. 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
MehrInformatik 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:
MehrDatenstrukturen & 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 4.4.1 Variablen und Konstanten 4.4.2 Prozeduren 4.4.3 Verzweigung und Iteration 4.4.4 Globale Größen Einführung
MehrAlgorithmen & Datenstrukturen Midterm Test 2
Algorithmen & Datenstrukturen Midterm Test 2 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann
MehrInformatik 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.
Mehr1. 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
MehrWir 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==
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen Lerneinheit : Dynamisches Programmieren Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester.. Einleitung Diese Lerneinheit widmet sich einer
MehrWS18 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
MehrAlgorithmen 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.
MehrAlgorithmen 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
MehrEinfache 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,
MehrAlgorithmen 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.
MehrAlgorithmen 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
MehrKapitel 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
MehrDatenstrukturen 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
MehrStud.-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
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
MehrAlgorithmen 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
MehrAufgabenblatt 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
MehrAlgorithmen 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
MehrAlgorithmen 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
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,
MehrDatenstrukturen 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:
MehrDatenstrukturen 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-
MehrEin 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
MehrADS: 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,
MehrPrä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
MehrAlgorithmen 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
MehrDer 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
MehrAlgorithmen 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
MehrVorlesung 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
MehrProbeklausur 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
MehrInformatik 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
MehrHashing 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
MehrWiederholung. 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
Mehr0 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
MehrKlausur 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
MehrHashing 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
MehrGrundlagen 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
MehrVorlesung 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
MehrAlgorithmen 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
MehrEINI 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
MehrProseminar 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
Mehr10. Ü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
MehrWiederholung. 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
MehrKlausur "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
MehrDatenstrukturen 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
MehrAlgorithmen 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:
MehrDr. 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
MehrAlgorithmen 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
MehrEINI 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
MehrGedä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
MehrAlgorithmen 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,
MehrChapter 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
MehrInformatik 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,
MehrDatenstrukturen & 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
MehrWiederholung: 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
Mehr7. 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
MehrGrundlagen 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
MehrVoronoi-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 :
MehrGrundlagen: 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
MehrInformatik 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,
Mehr5.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
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
MehrADS: 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.
MehrLö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
MehrAlgorithmen 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