Rückblick: Längste gemeinsame Zeichenkette
|
|
- Gerd Giese
- vor 5 Jahren
- Abrufe
Transkript
1 <latexit sha1_base64="mjichet3x/nr06pwvykpjqbwjfw=">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==</latexit> <latexit sha1_base64="mjichet3x/nr06pwvykpjqbwjfw=">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==</latexit> <latexit sha1_base64="mjichet3x/nr06pwvykpjqbwjfw=">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==</latexit> <latexit sha1_base64="hpdqpd5lkvngukcnbvyowmmcefe=">aaadg3icdvjdb9mwfe0wbin8bfdii8ue2rtrjmusxawisrzwgjqkuk2qo8pxb1o3tpzzzkqw8h94hx/gv8fji0thduukx+d++ozcxzlnsgfbb3flu7d9/8hoq//r4ydpn+3upt9xopauhlrwis9jooczdiaaaq6xuqssxhwu4sxh2n9xdvixkx3vzq5rspkmtrkl2lljpdfdejjyupgmjjsytkqkpdisnj1vplp5ocv6jlpdkr6rylodqfgprcd61jthh6ipmiepxsbhmsqsm01+zeja4kucthrnu6kvh6a3inn4aofradrfqbzij+foq71dwiqbpebsbrghnmev0qn5g/htjvhf04r9hqijfn5zrl+u5gowv7nq0sesjtpdgu/ub63oatd4d4r+b2eragzfwduzls3be0glfdjnovfqfaa5jmxzzsghw7hqkbo6iammsjcthgrkehapafluui3msaoqms00k/tamhm0fdi+muyn+2+gialszrrbyforddnxk7f6yiewmsrq43yj2el7iqkrz7eksqwfekt1o1m97uagzxmhiaorrqcfr1qg+mqhcznans8tifqykwwimyij1fyc+rhjno2hsrv2igzpf2t/ltvj3bjwttxmrmo3dmqzhwpzwpl2nh/1r3ed804rdfrhl5p9qxc9pb3npfpkoxbc570zcd45z87qoe7c/eh+dh95296r1/fovqfb7jrnhbnhxv8p2lwbow==</latexit> <latexit sha1_base64="se3t82u66wimu4puaw9b0yexivs=">aaac8xicdvhfb9mwehbdj5xyqwpeelgokdzpatkbrdcjqrivvcaniw6tmqhy3gvn1ykj32vbspoh8iz45r+cfwbhjidrasfb+vzdfefzxzxphrqe31vejzu3bm+173tu3rv/4gf3+9exmtxkgeujjt2nbyjwkyxjkybtzijiyg0n8fln2n9yaravst9qkuguiewq5kokcts0a8ne0jlnsi3dkzktdncpdvlrhubpzomayhdzgenizrnwuanx9bncvrg2xhld0kqqspfuquibsfo5szo5vneetq7po91ptxf09w+gwysd/jcy9ipaeqmnrlaj6xzrec6mzbniswqbobkeguwlskskhqot5gizk1asyckctgrgo3ibjggyxabbwvqkgffz967izx0z43nj3u6j1+yfilikieusu8j1p/c6b03+0xcbsyqr48b7janlx4zzi61ik2zhfmlnjv6rlobdqfrplhoksil0nmtohq8hywfkgirdocckva4vxj4jkys5sxxcwlj6y3q3fxmdduv57wp/mjnctrn9lqiu/mspdfydrdpunl/7z/8pjvf7g6a/ep+ynxo2m2jt9pq9yztswf6xexvljtiysfan/whttdoeep+8z96xjtrr/di8zhvmff0jfnjyig==</latexit> <latexit sha1_base64="se3t82u66wimu4puaw9b0yexivs=">aaac8xicdvhfb9mwehbdj5xyqwpeelgokdzpatkbrdcjqrivvcaniw6tmqhy3gvn1ykj32vbspoh8iz45r+cfwbhjidrasfb+vzdfefzxzxphrqe31vejzu3bm+173tu3rv/4gf3+9exmtxkgeujjt2nbyjwkyxjkybtzijiyg0n8fln2n9yaravst9qkuguiewq5kokcts0a8ne0jlnsi3dkzktdncpdvlrhubpzomayhdzgenizrnwuanx9bncvrg2xhld0kqqspfuquibsfo5szo5vneetq7po91ptxf09w+gwysd/jcy9ipaeqmnrlaj6xzrec6mzbniswqbobkeguwlskskhqot5gizk1asyckctgrgo3ibjggyxabbwvqkgffz967izx0z43nj3u6j1+yfilikieusu8j1p/c6b03+0xcbsyqr48b7janlx4zzi61ik2zhfmlnjv6rlobdqfrplhoksil0nmtohq8hywfkgirdocckva4vxj4jkys5sxxcwlj6y3q3fxmdduv57wp/mjnctrn9lqiu/mspdfydrdpunl/7z/8pjvf7g6a/ep+ynxo2m2jt9pq9yztswf6xexvljtiysfan/whttdoeep+8z96xjtrr/di8zhvmff0jfnjyig==</latexit> <latexit sha1_base64="se3t82u66wimu4puaw9b0yexivs=">aaac8xicdvhfb9mwehbdj5xyqwpeelgokdzpatkbrdcjqrivvcaniw6tmqhy3gvn1ykj32vbspoh8iz45r+cfwbhjidrasfb+vzdfefzxzxphrqe31vejzu3bm+173tu3rv/4gf3+9exmtxkgeujjt2nbyjwkyxjkybtzijiyg0n8fln2n9yaravst9qkuguiewq5kokcts0a8ne0jlnsi3dkzktdncpdvlrhubpzomayhdzgenizrnwuanx9bncvrg2xhld0kqqspfuquibsfo5szo5vneetq7po91ptxf09w+gwysd/jcy9ipaeqmnrlaj6xzrec6mzbniswqbobkeguwlskskhqot5gizk1asyckctgrgo3ibjggyxabbwvqkgffz967izx0z43nj3u6j1+yfilikieusu8j1p/c6b03+0xcbsyqr48b7janlx4zzi61ik2zhfmlnjv6rlobdqfrplhoksil0nmtohq8hywfkgirdocckva4vxj4jkys5sxxcwlj6y3q3fxmdduv57wp/mjnctrn9lqiu/mspdfydrdpunl/7z/8pjvf7g6a/ep+ynxo2m2jt9pq9yztswf6xexvljtiysfan/whttdoeep+8z96xjtrr/di8zhvmff0jfnjyig==</latexit> <latexit sha1_base64="esiqzxt4fx2vod47kwabwzcuhp0=">aaac8xicdvhbbhmxehwws0o4pfdii0we1epvdloqscshvekff6qikbzsdhv5nunqxrteewbbls5+cg+iv34ifgbhxjbigzfthz+zmx7ppivwsfh0oxhcun3n7lbzxuv+g4ephre3n5ygka2egtta2lnuigivw4auatgrligs1xcazt4u/kexyfgz/cnvbsszmozqoqqgt43ans4endvmarmpkgy9g3u0y9/wumzhxgfkyixtjcfnlukxbq6w5xzncbwillyezeva+xtxnd9iwk580ughsvzoehir7i7anai7f9cpxh7wv0gvgy2tw9z2pnputooxkwugoukteie9qkdecutkaqhbcylq+alffiyikkqbnnftmbmqrtbdhuyia0zcsnc1f+gzmz8y63dofmn+qxaiq6yy1ecupou3fqvyn77umbmjfdfed6rmn1bmammvwmer/xnrrvbgpttpj07lrumqy1whk1jzmnwxsd5wfitpygmhrfkt4pjcwchjj60vl4uuhkc/hbmurf8qff+fo8itvp0yakfwhwzebbdryd3yo/ndf/5/cllf7uxd3odxnap+ekhn9ow9zzusx16zi/aohbmbk+w7+9nyajqddd4hx4kvq9cgsdy8zrswfpsf2xxxzg==</latexit> Rückblick: Längste gemeinsame Zeichenkette Die längste gemeinsame Zeichenkette zweier gegebenen Zeichenketten s und t lässt sich mit Hilfe dynamischer Programmierung berechnen lc str(s, t) = max 0ÆiÆ s 0ÆjÆ t lc suf(s[: i],t[: j]) lc suf(s[: i],t[: j]) = Y _] _[ 0 : i =0 j =0 0 : i, j > 0 s[i 1] = t[j 1] lc suf(s[: i 1],t[: j 1]) + 1 : i, j > 0 s[i 1] = t[j 1] 81
2 Rückblick: Längste gemeinsame Zeichenkette Beispiel: Längste gemeinsame Zeichenkette zwischen s = t e e r t = b e e r e _ b e e r e _ t e e r 82
3 <latexit sha1_base64="i58ftlconco3fbfx5w2dyd74iyk=">aaad83icfvjdb9mwfhvbprbwtqfvvfhmofwmnbkgtkmgsrzwgjqkuihvuew4t6lxj85sz1uw8kt4q7zyg+dx4crd2sy2kx8n995zfhkv41xwbylgd6fbu3hz1u2lze/o3xv3h6ysptztslamrkwkqb7gvipggywmnwk+5gpoggvyjxcf6vz+esjnzfbfldleku0ypuomghearhy0uzdbmznpsropjvqpwmqjwlb5ztf9n5vhumrmkrwckymgw2pdj3d4tghgowdrh7/drmdmeourgbke2uahsmxoywfbpzvns2kvf+dnmlv6ajmjahzqqnk5/suw3cg9+/gfdnfn3jja72vomuwtwhpcvzkvm67ltqvogjvrf8xu1/xevcugifhah1gfgotpq0cut+amf6ulkshhqsvvdm1ref5kzs3wn7e3glfb+h8q+kgz1oapubn23zgsmpwssceztfctx2gqm8jjgs4eoofcq07zgiywpkfoc1crtucmyfr5pu1grlpqkw1ot4wfucguz6ryd2zwez3lsdtvukxjv1k3sf/m1cflc7guc0njfw5/a/jiwxupkecxoqqsgysp9qwnzryvwz7lhygmtuznhcbg4voo4ylxwiwohabmcdckzozuuwbcgfdiq7sdkxzfg0umyl188kkcthixco3ua0ennaxsx5bad7dy3gj+9r9fdfy2/tdww8+v14zb7yzqenqcnqj1fkk3aig+ol00qqzzp4u6y12vv/s+9370fral3c4p5xe6t3q//gjh60ac</latexit> <latexit sha1_base64="i58ftlconco3fbfx5w2dyd74iyk=">aaad83icfvjdb9mwfhvbprbwtqfvvfhmofwmnbkgtkmgsrzwgjqkuihvuew4t6lxj85sz1uw8kt4q7zyg+dx4crd2sy2kx8n995zfhkv41xwbylgd6fbu3hz1u2lze/o3xv3h6ysptztslamrkwkqb7gvipggywmnwk+5gpoggvyjxcf6vz+esjnzfbfldleku0ypuomghearhy0uzdbmznpsropjvqpwmqjwlb5ztf9n5vhumrmkrwckymgw2pdj3d4tghgowdrh7/drmdmeourgbke2uahsmxoywfbpzvns2kvf+dnmlv6ajmjahzqqnk5/suw3cg9+/gfdnfn3jja72vomuwtwhpcvzkvm67ltqvogjvrf8xu1/xevcugifhah1gfgotpq0cut+amf6ulkshhqsvvdm1ref5kzs3wn7e3glfb+h8q+kgz1oapubn23zgsmpwssceztfctx2gqm8jjgs4eoofcq07zgiywpkfoc1crtucmyfr5pu1grlpqkw1ot4wfucguz6ryd2zwez3lsdtvukxjv1k3sf/m1cflc7guc0njfw5/a/jiwxupkecxoqqsgysp9qwnzryvwz7lhygmtuznhcbg4voo4ylxwiwohabmcdckzozuuwbcgfdiq7sdkxzfg0umyl188kkcthixco3ua0ennaxsx5bad7dy3gj+9r9fdfy2/tdww8+v14zb7yzqenqcnqj1fkk3aig+ol00qqzzp4u6y12vv/s+9370fral3c4p5xe6t3q//gjh60ac</latexit> <latexit sha1_base64="i58ftlconco3fbfx5w2dyd74iyk=">aaad83icfvjdb9mwfhvbprbwtqfvvfhmofwmnbkgtkmgsrzwgjqkuihvuew4t6lxj85sz1uw8kt4q7zyg+dx4crd2sy2kx8n995zfhkv41xwbylgd6fbu3hz1u2lze/o3xv3h6ysptztslamrkwkqb7gvipggywmnwk+5gpoggvyjxcf6vz+esjnzfbfldleku0ypuomghearhy0uzdbmznpsropjvqpwmqjwlb5ztf9n5vhumrmkrwckymgw2pdj3d4tghgowdrh7/drmdmeourgbke2uahsmxoywfbpzvns2kvf+dnmlv6ajmjahzqqnk5/suw3cg9+/gfdnfn3jja72vomuwtwhpcvzkvm67ltqvogjvrf8xu1/xevcugifhah1gfgotpq0cut+amf6ulkshhqsvvdm1ref5kzs3wn7e3glfb+h8q+kgz1oapubn23zgsmpwssceztfctx2gqm8jjgs4eoofcq07zgiywpkfoc1crtucmyfr5pu1grlpqkw1ot4wfucguz6ryd2zwez3lsdtvukxjv1k3sf/m1cflc7guc0njfw5/a/jiwxupkecxoqqsgysp9qwnzryvwz7lhygmtuznhcbg4voo4ylxwiwohabmcdckzozuuwbcgfdiq7sdkxzfg0umyl188kkcthixco3ua0ennaxsx5bad7dy3gj+9r9fdfy2/tdww8+v14zb7yzqenqcnqj1fkk3aig+ol00qqzzp4u6y12vv/s+9370fral3c4p5xe6t3q//gjh60ac</latexit> <latexit sha1_base64="x+e3fpu7x+tljrmgfgfwoe9rp5o=">aaad83icfvjdb9mwfhvbprbwtcejlxytabujtqaibrjoei+8ia2jbppqqhlc29sre2e2sy1y+sw8iv75qfbrcjiibwobly+te+85prnxcs64nkhwu9pt3bp95+7ssnfv/oohj1zwh+9rwsggqyafvicx1sb4bkpdjyddxafnyweh8fxjnt84aaw5zl6amocopungp5xr40lj1y4mcji4ztjnataxhcpfs20ugdar7kb/tvjiss1mpvywmtzwxk3r0q6pnsxo5yjq4/eycjgayj0sq8iz2yhulu1aclzqyu7zrfjlbfgf5q4+woqeab+1kfyt/ypsd3dvpn6jq1ytn47wh5pzcpmesb7vvu7fjoqyhdrzy2f9kpnqhp+ot9ggbn/oi+otcp1p9yjiycz0r7vemjheuplo0byw549x1gj/c3srel2n/wehhzrrds3wnhttqiasfslkhgmq9sgmchm5wcozacdcamgpm9merjtiaq4qsgnifiwql6ydzggkorln6anwcxez4klu7s4mbqlngzamwpdp7crrbunlutp4zs6wcm5orc/sbw2ff2sjnri8vlsvdypkqb7k1ey3isuzvdcqsdbotbdysfwfztzhcpgrpqouke5agdmmksqmo/aeayh2mntuazcpqbmldz6xg3huaq6deicogbnb6ths+w5wnhvnv/7j68h+ph8gfvjlzdru1mjis+gpeobwuyjeov30ce2hiwkdp13uxe56val3vfej97mt7xywncfowur9+gukieyu</latexit> Rückblick: Längste gemeinsame Zeichenfolge Die längste gemeinsame Zeichenfolge zweier gegebenen Zeichenketten s und t lässt sich mit Hilfe dynamischer Programmierung berechnen Y 0 : i =0 j =0 lc seq(s[: i],t[: j]) = _] _[ lc seq(s[: i 1],t[: j 1]) + 1 Q R : i, j > 0 s[i 1] = t[j 1] lc seq(s[: i],t[: j 1]), max c d a b lc seq(s[: i 1],t[: j]) : i, j > 0 s[i 1] = t[j 1] 83
4 Rückblick: Längste gemeinsame Zeichenfolge Beispiel: Längste gemeinsame Zeichenfolge zwischen s = b a u m t = b l u e m _ b l u e m _ b a u m 84
5 6.4 Suche in Zeichenketten Wie können wir feststellen, ob eine Zeichenkette p (Muster, Englisch: pattern) in einer anderen Zeichenkette t (Text, Englisch: text) enthalten ist? Dieses Problem hat zahlreiche Anwendungen z. B. in Applikationen wie Editoren, IDEs, Browsern und Werkzeugen (z. B. grep in UNIX) 85
6 Suche in Zeichenketten Uns sind das Muster p und der Text t gegeben kommt das Muster im Text vor, geben wir einen Index i zurück, so dass t[i:i+ p ] = p gilt kommt das Muster nicht im Text vor, geben wir -1 zurück Beispiel: p = aabaa t = axabaabaay Ergebnis: 4 p = aabaa t = aabaxaabab Ergebnis: -1 86
7 Naïver Algorithmus Ein naïver Algorithmus überprüft für jeden möglichen Index i, ob t[i:i+ p ] = p gilt, d. h. er vergleicht das Muster ausgehend von jeder Stelle im Text Beispiel: t = ababacababcabc ababc ababc ababc ababc ababc ababc Zeichen stimmt überein Zeichen stimmt nicht überein Zeichen nicht verglichen 87
8 Naïver Algorithmus 1 public class PatternMatcherNaive { 2 3 public int search(char[] t, char[] p) { 4 5 // Alle Indizes des Texts betrachten 6 for ( int i = 0; i < t.length; i++) { 7 // Muster vergleichen 8 int j = 0; 9 while (j < p.length && t[i + j] == p[j]) { 10 j++; 11 } 12 // Muster gefunden? 13 if (j == p.length) { 14 return i; 15 } 16 } 17 return -1; 18 } 19 } 88
9 Zeit- und Platzkomplexität Im schlechtesten Fall findet der naïve Algorithmus alle bis auf das letzte Zeichen des Musters ausgehend von jedem Index des Texts Beispiel: p = aaaab t = aaaaaaaaaaaaaaaaa Die innere Schleife wird in solch einem Fall bis zu t p Mal durchlaufen und die Zeitkomplexität liegt damit in O( t p ) Die Platzkomplexität liegt in O(1) 89
10 Verschiebungen Müssen wir wirklich für jeden Index das Muster von seinem Anfang an mit dem Text vergleichen? Beispiel: t = ababacababcabc ababc Wir wissen, dass vor dem nicht übereinstimmenden Zeichen c die Zeichen ab bereits gefunden wurde, welche auch am Anfang des Musters stehen 90
11 Verschiebungen Müssen wir wirklich für jeden Index das Muster von seinem Anfang an mit dem Text vergleichen? Beispiel: t = ababacababcabc ababc ababc Es wäre damit in diesem Fall sicher, das Muster um zwei Positionen zu verschieben und erst ab dem dritten Zeichen mit dem Text zu vergleichen 91
12 Algorithmus von Knuth, Morris und Pratt Der Algorithmus von Knuth, Morris und Pratt (kurz: KMP) nutzt solche sicheren Verschiebungen aus und vermeidet so, dass das Muster von seinem Anfang an mit dem Text verglichen werden muss Als Vorberechnung analysiert der Algorithmus das Muster und berechnet eine Verschiebungstabelle 92
13 <latexit sha1_base64="0jvbskktq8a37fdspgqzkk9iwm8=">aaac1hicdvhljtmwfhxdayivdrbjy1ehsursaylobvilnmyqbke6izvr5bg3hteohdno0gcyqmz5ib6ejvv4czyukegav7f0cu658vu5acmznmh4reddunzl6rw96/0bn2/dvjpyvzvtsliuiiq5vccp0cczgmgww+gkvecklmnxmr9s+8dnodst4p2ps0gkshisy5qyry0guvwqc6okq5v5osevcfyjpdodstl+jtendyjne0/istmf5eklygmby91ugjjab6ssyxt8jsw5ap0sbspqpzgch08o8d9g5idddaf3uvdhi/3ekl5kwhugdove6/kole1iitkmcmj6cawhjdqnk5itscqlqmsuqbzgvl3bdlcqanrio3sa/mgxs5xj5y4wugp/nlck0louuqdszdaxey35z14qzw5iqnfut4blh7zmizhlfvg1e4ms7/wftu02tiwtzwva0o2iwcwxkbjnci+zamp47qchijkrmd0lildjeurh3aaniu3+gjwf5t4wvk6drekiz6coohfzbywbltp3som7am79x/8hswn/fpqjn0+h0/e2i7shhqch6deaowdoil6hixqhir6i7+gh+unnvi/ej+/zvur1fs/cqzvlffkfixbobq==</latexit> <latexit sha1_base64="0jvbskktq8a37fdspgqzkk9iwm8=">aaac1hicdvhljtmwfhxdayivdrbjy1ehsursaylobvilnmyqbke6izvr5bg3hteohdno0gcyqmz5ib6ejvv4czyukegav7f0cu658vu5acmznmh4reddunzl6rw96/0bn2/dvjpyvzvtsliuiiq5vccp0cczgmgww+gkvecklmnxmr9s+8dnodst4p2ps0gkshisy5qyry0guvwqc6okq5v5osevcfyjpdodstl+jtendyjne0/istmf5eklygmby91ugjjab6ssyxt8jsw5ap0sbspqpzgch08o8d9g5idddaf3uvdhi/3ekl5kwhugdove6/kole1iitkmcmj6cawhjdqnk5itscqlqmsuqbzgvl3bdlcqanrio3sa/mgxs5xj5y4wugp/nlck0louuqdszdaxey35z14qzw5iqnfut4blh7zmizhlfvg1e4ms7/wftu02tiwtzwva0o2iwcwxkbjnci+zamp47qchijkrmd0lildjeurh3aaniu3+gjwf5t4wvk6drekiz6coohfzbywbltp3som7am79x/8hswn/fpqjn0+h0/e2i7shhqch6deaowdoil6hixqhir6i7+gh+unnvi/ej+/zvur1fs/cqzvlffkfixbobq==</latexit> <latexit sha1_base64="0jvbskktq8a37fdspgqzkk9iwm8=">aaac1hicdvhljtmwfhxdayivdrbjy1ehsursaylobvilnmyqbke6izvr5bg3hteohdno0gcyqmz5ib6ejvv4czyukegav7f0cu658vu5acmznmh4reddunzl6rw96/0bn2/dvjpyvzvtsliuiiq5vccp0cczgmgww+gkvecklmnxmr9s+8dnodst4p2ps0gkshisy5qyry0guvwqc6okq5v5osevcfyjpdodstl+jtendyjne0/istmf5eklygmby91ugjjab6ssyxt8jsw5ap0sbspqpzgch08o8d9g5idddaf3uvdhi/3ekl5kwhugdove6/kole1iitkmcmj6cawhjdqnk5itscqlqmsuqbzgvl3bdlcqanrio3sa/mgxs5xj5y4wugp/nlck0louuqdszdaxey35z14qzw5iqnfut4blh7zmizhlfvg1e4ms7/wftu02tiwtzwva0o2iwcwxkbjnci+zamp47qchijkrmd0lildjeurh3aaniu3+gjwf5t4wvk6drekiz6coohfzbywbltp3som7am79x/8hswn/fpqjn0+h0/e2i7shhqch6deaowdoil6hixqhir6i7+gh+unnvi/ej+/zvur1fs/cqzvlffkfixbobq==</latexit> <latexit sha1_base64="gstedc0ckn9tc+mwb0qrnqkdwho=">aaac1hicdvhljtmwfhxdayivdizzwfrirpiykohuii3ehg3siehnpcaqhpem48axi9szgkxwic0/xjewzas/gdn2jdravsydnhuufh1ovngmtrh+73lxrl67fmpvzv/w7tt37w3270+0rbwfmeou1wlgnhamidbmcditfjay43csfa+6/sk5km2keg+actkslatlgsxgubnbnjtenkns6na6tpflnnri7vrgbiff4gvrnwdvjunkxe3hrdqbxmdkwlcbbibwuzrp2qqfs3ghwqazwtd0dw5h4dnd/dei/hbdq7st49l+b5hmja1leizyovu0ciutwqimoxzafljrqagtyakmjkxibsq1c5algnxsth0upasd2ru9lx7smdnopxjhglxm/5ywpns6kton7mzql3sd+c9ejmvhskz37regfr83tic4yxrrjxujkh/0pu1npkote1vtqndnonnnszg4ywrpmqjqeomaoyo5kza9i4pq4xlqj+tbg8ta/qvfbsp9lhjtblpkec5ohxdisgpkny2172dbd9fc+i//dyyhfht60dtnw6prnqq99ba9qk9qhj6ji/qahamyufqn/ua/0s9v4n3ypntfnlkvt515ghbk+/obfhpogq==</latexit> <latexit sha1_base64="drqrf7z1pnopml4xxbu7c7erip8=">aaackxicdvfbixmxfe7h21pv3v3ffakwwrfnsgrbpghfxwqrvrc7c+1qzqsn3tdjzejordso/su+6l/y35izkthvdwl8+b7zkxpjsiudxfgpxndj5q3bd/bu9u/df/dw0wd/4nszygqccqompc/aoziftkmswvpsiuhm4vmwv231s0u0tprie9ulphrwhvxjaespxebgroeurg7czhan/dv/kswgwzg8go/il2p+n0jcuivh5dhr4msx31vpl0zuggsscpybjxfjaqowpfc46c8rhywihny4g7ieem3arnfojfvvyh4wongltdfbhj/zzjkvjpw3in6xfzoa0m7vovozbsfuutas/9qyy3kczo3835dmv2yzfimzwbc178saz+5apbqapy0syoqwentcv5xizhg7al6ufgwp2gmqvvprchebfgt5dftnnbgjps6/ojxd64+mpttrovseh6elfbberdq7jqs93pt9an7pn/8fnb6fsrwmh18nj6ptjtgee8kesucsycdswt6xezzlgl2xr+wb+x4cbungerzzpga9x55dthpb+5+4bsxg</latexit> <latexit sha1_base64="drqrf7z1pnopml4xxbu7c7erip8=">aaackxicdvfbixmxfe7h21pv3v3ffakwwrfnsgrbpghfxwqrvrc7c+1qzqsn3tdjzejordso/su+6l/y35izkthvdwl8+b7zkxpjsiudxfgpxndj5q3bd/bu9u/df/dw0wd/4nszygqccqompc/aoziftkmswvpsiuhm4vmwv231s0u0tprie9ulphrwhvxjaespxebgroeurg7czhan/dv/kswgwzg8go/il2p+n0jcuivh5dhr4msx31vpl0zuggsscpybjxfjaqowpfc46c8rhywihny4g7ieem3arnfojfvvyh4wongltdfbhj/zzjkvjpw3in6xfzoa0m7vovozbsfuutas/9qyy3kczo3835dmv2yzfimzwbc178saz+5apbqapy0syoqwentcv5xizhg7al6ufgwp2gmqvvprchebfgt5dftnnbgjps6/ojxd64+mpttrovseh6elfbberdq7jqs93pt9an7pn/8fnb6fsrwmh18nj6ptjtgee8kesucsycdswt6xezzlgl2xr+wb+x4cbungerzzpga9x55dthpb+5+4bsxg</latexit> <latexit sha1_base64="drqrf7z1pnopml4xxbu7c7erip8=">aaackxicdvfbixmxfe7h21pv3v3ffakwwrfnsgrbpghfxwqrvrc7c+1qzqsn3tdjzejordso/su+6l/y35izkthvdwl8+b7zkxpjsiudxfgpxndj5q3bd/bu9u/df/dw0wd/4nszygqccqompc/aoziftkmswvpsiuhm4vmwv231s0u0tprie9ulphrwhvxjaespxebgroeurg7czhan/dv/kswgwzg8go/il2p+n0jcuivh5dhr4msx31vpl0zuggsscpybjxfjaqowpfc46c8rhywihny4g7ieem3arnfojfvvyh4wongltdfbhj/zzjkvjpw3in6xfzoa0m7vovozbsfuutas/9qyy3kczo3835dmv2yzfimzwbc178saz+5apbqapy0syoqwentcv5xizhg7al6ufgwp2gmqvvprchebfgt5dftnnbgjps6/ojxd64+mpttrovseh6elfbberdq7jqs93pt9an7pn/8fnb6fsrwmh18nj6ptjtgee8kesucsycdswt6xezzlgl2xr+wb+x4cbungerzzpga9x55dthpb+5+4bsxg</latexit> <latexit sha1_base64="j2wmshtsblrvlvb0ljjt0ahdp74=">aaackxicdvfbaxnbfj6stxpvafvoy2aqfhevvtb5eik+fesoynpcsoszk5n02jmdzeasdl3yv3y1f6n/prnjbfp1mapffn/5mhpjsiudxff1j7hz9979b3spu48ep3n6rld/copmzqwohvhgnmfgumkcxyrj4xlpexsm8czlp7b62te0tprik9ulphqwhvxiaespwe9gqoeurg7cahkn/d1/ncx6/tg8gg7in0p+n0jceb19to2t2x5noz0buwksschwbplejaunwjjc4ao7rrywihjy4gtiekq0abneo5fsvst7wibglzbr3lb8pwfmfggsvwxxnfunowhtxk0zn9l24m5rlflpltmmj8jczv8nyfzhhmmrkpkfw/torpnublvki0haykkscauxkxrrku6gt4pmc2lrkko9agglhwuxf2bbkf9hd7o2nthy+veuz2j9kdhnopqvnvdjdjecwstie7dxoyerrl/n7/nz/4ptozcjw+tl2/5osf3shnvoxrbxlghv2igdsxm2zojdsp/sf7skdonhmao+bfkdztzzyhyi+hqdfllmda==</latexit> Verschiebungstabelle Die Verschiebungstabelle s für ein gegebenes Muster p besteht aus p +1 Einträgen, die definiert sind als s[0] = 1 s[j] = max k<j p[: k] isteinsu x von p[: j] Beispiel: p = a b a b c s =
14 Verschiebungstabelle Beispiel: p = a b a b c s = Wir sehen aus der Verschiebungstabelle z. B., dass bei einer Nichtübereinstimmung des Zeichens p[4] = c mit dem aktuellen Zeichen des Texts bereits die ersten s[4] = 2 des Musters gefunden wurden, so dass wir als nächstes das Zeichen p[2] = a mit dem aktuellen Zeichen des Texts vergleichen müssen 94
15 Algorithmus von Knuth, Morris und Pratt 1 public class PatternMatcherKMP { 2 3 public int search(char[] t, char[] p) { 4 // Verschiebungstabelle berechnen 5 int[] s = computeshifts(p); 6 7 // Indizes für Text und Muster 8 int i = 0; 9 int j = 0; while (i < t.length) { 12 // Muster gemäß Verschiebungen zurücksetzen? 13 while (j >= 0 && p[j]!= t[i]) { 14 j = s[j]; 15 } 16 i++; 17 j++; // Wurde das Muster gefunden? 20 if (j == p.length) { 21 return i - p.length; 22 } 23 } return -1; 26 } 27 } 95
16 Algorithmus von Knuth, Morris und Pratt Beispiel: t = abaxababyababb ababc i = 3 j = 3 s[3] = 1 ababc i = 3 j = 1 s[1] = 0 ababc i = 3 j = 0 s[0] = -1 ababc i = 8 j = 4 s[4] = 2 ababc i = 8 j = 2 s[2] = 0 ababc i = 8 j = 0 s[0] = -1 ababc Muster nicht gefunden! Zeichen nicht verglichen aufgrund von Verschiebung p = a b a b c s =
17 Berechnung der Verschiebungstabelle Die Verschiebungstabelle lässt sich durch einen Vergleich des Musters mit sich selbst effizient berechnen Beispiel: p = ababc s = -1 0 ababc s = ababc s = ababc s = ababc s = Der bereits berechnete Teil der Verschiebungstabelle wird hier analog zum KMP-Algorithmus ausgenutzt 97
18 Berechnung der Verschiebungstabelle 1 public class PatternMatcherKMP { private int[] computeshifts(char[] p) { 6 int[] s = new int[p.length + 1]; 7 int i = 0; 8 int j = -1; 9 s[0] = -1; while (i < p.length) { 12 while (j >= 0 && p[i]!= p[j]) { 13 j = s[j]; 14 } 15 i++; 16 j++; 17 s[i] = j; 18 } 19 return s; 20 } } 98
19 Zeit- und Platzkomplexität Bei der Berechnung der Verschiebungstabelle werden die äußere Schleife sowie die innere Schleife in Summe höchstens 2 p Mal durchlaufen mit Laufzeit in O( p ) Beim KMP-Algorithmus werden die äußere Schleife und die innere Schleife in Summe höchstens 2 t Mal durchlaufen mit Laufzeit in O( t ) Insgesamt liegt die Laufzeit also in O( p + t ) Die Platzkomplexität liegt in O( p ) 99
20 Zusammenfassung Naïve Suche in Zeichenketten hat Laufzeit in O( p t ), da das Muster ausgehend von jeder Stelle des Textes verglichen wird Algorithmus von Knuth, Morris und Pratt analysiert das Muster vorab und berechnet eine Verschiebungstabelle; damit kann ein Muster mit Laufzeit in O( p + t ) gesucht werden 100
21 Literatur [1] T. H. Cormen, C. E. Leiserson, R. Rivest und C. Stein: Algorithmen Eine Einführung, Oldenbourg Verlag, 2009 (Kapitel 32) [2] G. Saake und K.-U. Sattler: Algorithmen und Datenstrukturen, dpunkt.verlag, 2013 (Kapitel 17) 101
6. Algorithmen auf Zeichenketten
6. Algorithmen auf Zeichenketten Motivation Wir lernen nun Algorithmen zur Lösung verschiedener elementarer Probleme auf Zeichenketten zu lösen Zeichenketten spielen eine wichtige Rolle in diversen Gebieten
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
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
Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 4 Suchen in Texten Version vom: 15. November 2016 1 / 39 Vorlesung 8 15. November
MehrSuche in Texten. Verschiedene Szenarios: Dynamische Texte. Texteditoren Symbolmanipulatoren. Statische Texte
Suche in Texten Suche in Texten Verschiedene Szenarios: Dynamische Texte Texteditoren Symbolmanipulatoren Statische Texte Literaturdatenbanken Bibliothekssysteme Gen-Datenbanken WWW-Verzeichnisse 2 Suche
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Suchen Bisher: Sequentielle Suche Binäre Suche Interpolationssuche Jetzt: Suchen in Zeichenfolgen 2 1 Suchen in Zeichenfolgen Das Problem:
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
MehrZeichenketten Benedikt Straßner. Programming Systems Group Martensstr Erlangen Germany
Zeichenketten 16.04.2018 Benedikt Straßner Programming Systems Group Martensstr. 3 91058 Erlangen Germany Übersicht String Matching Algorithmen Naive Stringsuche Knuth Morris Pratt (KMP) Algorithmus Boyer-Moore
MehrInformatik II, SS 2018
Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 20 (9.7.2018) String Matching (Textsuche) Algorithmen und Komplexität Textsuche / String Matching Gegeben: Zwei Zeichenketten (Strings)
MehrInformatik II, SS 2016
Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 20 (13.7.2016) String Matching (Textsuche) Algorithmen und Komplexität Textsuche / String Matching Gegeben: Zwei Zeichenketten (Strings)
MehrAlgorithmen und Datenstrukturen II
Algorithmen und Datenstrukturen II AG Praktische Informatik Technische Fakultät Vorlesung Sommer 2009 Teil I Algorithmen zur exakten Suche in Texten Die Klasse String Zeichenketten sind in Java Objekte.
MehrString - Matching. Kapitel Definition
Kapitel 1 String - Matching 1.1 Definition String - Matching ( übersetzt in etwa Zeichenkettenanpassung ) ist die Suche eines Musters ( Pattern ) in einem Text. Es findet beispielsweise Anwendung bei der
MehrAlgorithmen zur exakten Suche in Texten. Algorithmen und Datenstrukturen II 1
Algorithmen zur exakten Suche in Texten Algorithmen und Datenstrukturen II 1 Die Klasse String Zeichenketten sind in Java Objekte. Sie können mit dem +-Operator zu neuen Objekten verknüpft werden. String
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,
MehrZeichenketten. Michael Fularczyk Michael Fularczyk Zeichenketten / 41
Zeichenketten Michael Fularczyk 17.05.2011 Michael Fularczyk Zeichenketten 17.05.2011 1 / 41 Inhalt Zeichenketten Zeichensätze Darstellung Suchverfahren naive Stringsuche Knuth-Morris-Pratt Boyer-Moore
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
MehrZeichenketten. 10. Mai 2017 Simon Bachstein Simon Bachstein Hallo Welt -Seminar - LS 2 Zeichenketten 1
Zeichenketten 10. Mai 2017 Simon Bachstein 10.05.2017 Simon Bachstein Hallo Welt -Seminar - LS 2 Zeichenketten 1 Übersicht String-Matching Problem Motivation Algorithmen zur Lösung Naive Stringsuche KMP
MehrInformatik II, SS 2018
Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 21 (11.7.2018) String Matching (Textsuche) II Greedy Algorithmen I Algorithmen und Komplexität Textsuche / String Matching Gegeben: Zwei
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
Mehr5. Mustererkennung. Anwendungsbeispiele: suche Zeichenfolge in Text suche Bitmuster in Pixelbild. gegeben: endliches Alphabet Σ. Muster p Σ m, m IN
5. Mustererkennung Anwendungsbeispiele: suche Zeichenfolge in Text suche Bitmuster in Pixelbild gegeben: endliches Alphabet Σ Text t Σ n, n IN Muster p Σ m, m IN gesucht: erste (bzw. jede) Position von
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
MehrInformatikgrundlagen (WS 2016/2017)
Informatikgrundlagen (WS 2016/2017) Klaus Berberich (klaus.berberich@htwsaar.de) Wolfgang Braun (wolfgang.braun@htwsaar.de) 0. Organisatorisches Dozenten Klaus Berberich (klaus.berberich@htwsaar.de) Sprechstunde
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
MehrUniversität Bremen. Textsuche. Thomas Röfer. Naive Suche Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuche Editierdistanz
Textsuche Thomas Röfer Naive Suche Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuche Editierdistanz Rückblick Graphenalgorithmen Scan-Line-Prinzip Adjazenzmatrix Adjazenzlisten
MehrZeichenketten. 29. April 2015 Benedikt Lorch. Benedikt Lorch Zeichenketten April
Vorlage Zeichenketten 29. April 2015 Benedikt Lorch Benedikt Lorch Zeichenketten 17. 29. April 2015 1 Motivation String Matching in the DNA Alphabet 1 Σ DNA = {A, G, C, T} DNA Text: 1 982 672 Zeichen Suchstring:
MehrAlgorithmen und Datenstrukturen II. Suchen in Texten. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München
Algorithmen und Datenstrukturen II Suchen in Texten Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 27.03.2018 06:32 Inhaltsverzeichnis Ein Text.......................................
MehrString matching: Überblick
String matching: Überblick String matching = Erkennung von Zeichenketten. Problemstellung & Anwendungen Grundlagen Rabin-Karp Verfahren (basierend auf hashing) String-matching mit endlichen Automaten Knuth-Morris-Pratt
MehrBoyer Moore Algorithmus
LMU, CIS, SoSe 2006 Veranstaltung: Programmierung von Stringmatchingalgorithmen in C Kursleiter: Max Hadersbeck Referenten: Galina Hinova Stefan Partusch Andreas Neumann Die Erfinder J Strother Moore J.
MehrProgramm heute. Algorithmen und Datenstrukturen (für ET/IT) Entartete Suchbäume. Beispiel: Balancieren von Suchbaum. Wintersemester 2012/13
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Fortgeschrittene Datenstrukturen Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 8 Such-Algorithmen
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge
MehrAlgorithmen zur exakten Suche in Texten
Kapitel 4 Algorithmen zur exakten Suche in Texten In diesem Kapitel wird ein Problem aus der Sequenzanalyse näher betrachtet, die exakte Textsuche: Gegeben ein Text und ein Muster, finde alle Vorkommen
Mehr8.4 Suffixbäume. Anwendungen: Information Retrieval, Bioinformatik (Suche in Sequenzen) Veranschaulichung: DNA-Sequenzen
8.4 Suffixbäume Ziel: Datenstruktur, die effiziente Operationen auf (langen) Zeichenketten unterstützt: - Suche Teilzeichenkette (Substring) - Präfix - längste sich wiederholende Zeichenkette -... Anwendungen:
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
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
MehrADS: Algorithmen und Datenstrukturen 1
ADS: Algorithmen und Datenstrukturen 1 Teil 12 Uwe Quasthoff Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 16. Januar 2018 [Letzte Aktualisierung: 15/01/2018, 15:02]
Mehr1.3 Knuth-Morris-Pratt-Algorithmus
1.3 Knuth-Morris-Pratt-Algorithmus Präprozessing bestimmt längste Ränder der Präfixe von P Die Kenntnis der Ränder erspart Vergleiche bei periodischen Suchwörtern Laufzeit: Θ(m) für das Präprozessing,
MehrINFORMATIK FÜR BIOLOGEN
Technische Universität Dresden 15012015 Institut für Theoretische Informatik Professur für Automatentheorie INFORMATIK FÜR BIOLOGEN Musterklausur WS 2014/15 Studiengang Biologie und Molekulare Biotechnologie
MehrAlgorithmen auf Zeichenketten
Algorithmen auf Zeichenketten Rabin-Karp Algorithmus Christoph Hermes hermes@hausmilbe.de Zeichenketten: Rabin-Karp Algorithmus p. 1/19 Ausblick auf den Vortrag theoretische Grundlagen... Zeichenketten:
MehrAlgorithmen und Datenstrukturen (für ET/IT) Programm heute. Sommersemester Dr. Tobias Lasser
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 06 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 7 Fortgeschrittene Datenstrukturen 8 Such-Algorithmen
MehrQuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert
4.3.6 QuickSort QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert QuickSort teilt das gegebene Array anhand
MehrKapitel 5. Textalgorithmen. 5.1 Grundbegriffe
Kapitel 5 Textalgorithmen 5.1 Grundbegriffe Wir beschäftigen uns hauptsächlich mit Textsuche (und Varianten). Gegeben: Alphabet Σ (mindestens zwei Buchstaben). Text S = s 1... s n Σ in Array S[1..n]. Muster
MehrInformatikgrundlagen (WS 2015/2016)
Informatikgrundlagen (WS 2015/2016) Klaus Berberich (klaus.berberich@htwsaar.de) Wolfgang Braun (wolfgang.braun@htwsaar.de) 0. Organisatorisches Dozenten Klaus Berberich (klaus.berberich@htwsaar.de) Sprechstunde
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
MehrStudent: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:
Berufsakademie Stuttgart / Außenstelle Horb Studienbereich Technik Studiengang Informationstechnik Kurs IT2006, 2.Semester Dozent: Olaf Herden Student: Alexander Carls Matrikelnummer: 166270 Aufgabe: Beschreibung
MehrBerühmte Informatiker
Berühmte Informatiker Teil 10: J. Backus & D. E. Knuth 1924-1938- * 03.12.1924 in Philadelphia John Backus Vorzeitiger Abbruch des Studiums der Chemie (1942) und der Medizin (1945) Während der Arbeit als
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,
MehrEinführung in die Informatik 1
Einführung in die Informatik 1 Prof. Dr. Harald Räcke, R. Palenta, A. Reuss, S. Schulze Frielinghaus 18.04.2017 Wiederholungsklausur Vorname Nachname Matrikelnummer Unterschrift Füllen Sie die oben angegebenen
MehrPraktikum Algorithmische Anwendungen WS 2006/07 Ausarbeitung: Schnelle Stringsuchalgorithmen Boyer-Moore und Knuth-Morris-Pratt
Praktikum Algorithmische Anwendungen WS 2006/07 Ausarbeitung: Schnelle Stringsuchalgorithmen Boyer-Moore und Knuth-Morris-Pratt Team A Rot Daniel Baldes (Nr. 11041002, ai688@gm.fh-koeln.de) Holger Pontius
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
MehrTextsuche. Textsuche
Textsuche Stringologie Online-Algorithmen Peter Leupold Das allgemeine Problem der Text- oder Mustersuche besteht darin ein (Such-) Muster (pattern) x der Länge m in einem (Such-) Text (text) y der Länge
MehrAlgorithmen & Datenstrukturen Midterm Test 2
Algorithmen & Datenstrukturen Midterm Test 2 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann
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
MehrAufgabe (Schreibtischtest, Algorithmenanalyse)
Aufgabe (Schreibtischtest, Algorithmenanalyse) Führen Sie einen Schreibtischtest für den Algorithmus Positionsort für das folgende Eingabe-Array durch. Geben Sie nach jedem Durchlauf der for-schleife mit
MehrMathematisches Praktikum - SoSe 2014
Mathematisches Praktikum - SoSe 2014 Prof. Dr. Wolfgang Dahmen Felix Gruber, M. Sc., Christian Löbbert, M. Sc., Yuanjun Zhang, M. Sc., Klaus Kaiser, M. Sc. Aufgabe 3 Bearbeitungszeit: zwei Wochen (bis
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.
MehrMathematisches Praktikum - SoSe 2015
Mathematisches Praktikum - SoSe 2015 Prof. Dr. Wolfgang Dahmen Felix Gruber, Igor Voulis Aufgabe 4 Bearbeitungszeit: drei Wochen (bis Freitag, 5. Juni 2015) Mathematischer Hintergrund: String-Matching-Algorithmen,
MehrAlgorithmen auf Sequenzen Vorbereitung zur Prüfung
Algorithmen auf Sequenzen Vorbereitung zur Prüfung Dominik Kopczynski Lehrstuhl für Algorithm Engineering (LS11) Fakultät für Informatik TU Dortmund Überblick Zusammenfassung aller Themen Fragen, die in
Mehr8. Mustersuche in Zeichenketten
8. Mustersuche in Zeichenketten Zeichenkette (String) T ist endliche Folge von Symbolen aus endlichem Alphabet Σ. Besteht T aus n Symbolen, so werden diese in T[1], T[2],..., T[n] gespeichert. T[i..j],
MehrClevere Algorithmen programmieren
ClevAlg 2017 Arithmetische Operationen Clevere Algorithmen programmieren Dennis Komm, Jakub Závodný, Tobias Kohn 27. September 2017 Addition zweier Zahlen Addition von Zahlen Wir stellen Zahlen als Strings
MehrAlgorithmen und Datenstrukturen (Informatik II) SS Klausur
Lehrstuhl für Algorith. und Datenstrukturen Prof. Dr. Hannah Bast Axel Lehmann Algorithmen und Datenstrukturen (Informatik II) SS 2013 http://ad-wiki.informatik.uni-freiburg.de/teaching Klausur Mittwoch
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
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für
MehrUE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 3
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 3 Algorithmen mit Gedächtnis Besonderheit Beispiele Typische Algorithmen Realisierungsvarianten Institut für Pervasive Computing Johannes
MehrAlgorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen
Ludwig-Maximilians-Universität München München, 16.04.2018 Institut für Informatik Prof. Dr. Thomas Seidl Anna Beer, Florian Richter Algorithmen und Datenstrukturen SS 2018 Übungsblatt 1: Grundlagen Tutorien:
Mehr1 Einführung: Algorithmen. Algorithmen und Datenstrukturen WS 2012/13. Pro f. Dr. Sán do r Fe k e te
1 Einführung: Algorithmen Algorithmen und Datenstrukturen WS 2012/13 Pro f. Dr. Sán do r Fe k e te Literatur 1.1 Was ist ein Algorithmus? Ein Algorithmus ist eine aus endlich vielen Schritten bestehende
MehrVorlesung 2 KÜRZESTE WEGE
Vorlesung 2 KÜRZESTE WEGE 34 Kürzeste Wege im Graphen Motivation! Heute:! Kürzeste Wege von einem Knoten (SSSP)! Kürzeste Wege zwischen allen Knotenpaaren (APSP)! Viele Anwendungen:! Navigationssysteme!
MehrDatenstrukturen. Sommersemester Kapitel 1: Motivation / Grundlagen. Steffen Lange
Datenstrukturen Sommersemester 2010 Steffen Lange 1/1, Folie 1 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen Organisatorisches Vorlesung wöchentlich; zwei Blöcke Folien im Netz (/* bitte zur Vorlesung
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
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.
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a
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
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
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 16 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Fragen zum zweiten Übungsblatt? 2. Vorbesprechung des dritten Übungsblatts 3. Beispielaufgaben
MehrZentralübung Grundlagen der Programmierung
Zentralübung Grundlagen der Programmierung Bastian Cramer Standardbelegungen für Variablen lokale Variablen müssen initialisiert werden! Ansonsten gilt: 2 Aufgabe 1: while Schleife Quersumme einer beliebigen
MehrTeil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik
Grundlagen der Programmierung 1 Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2 Softwaretechnik Prof. Dr. O. Drobnik Professur Architektur und Betrieb verteilter Systeme Institut für
MehrAufgabe (Schreibtischtest, lexikographische Ordnung)
Aufgabe (Schreibtischtest, lexikographische Ordnung) Führen Sie einen Schreibtischtest für den Algorithmus Bubblesort aus der VL für die folgenden Eingabe-Arrays durch. Geben Sie das Array S nach jedem
MehrRückblick: Starke Zusammenhangskomponenten
Rückblick: Starke Zusammenhangskomponenten Der Algorithmus von Kosaraju bestimmt die starken Zusammenhangskomponenten eines gerichteten Graphen wie folgt: Schritt 1: Bestimme den transponierten Graphen
Mehrπ auf (und mehr) Dezimalen Wegen π = 4 arctan(1) kann die Reihenentwicklung des Arkustangens verwendet werden.
π auf 10000000 (und mehr) Dezimalen Ac Wegen π = 4 arctan(1) kann die Reihenentwicklung des Arkustangens verwendet werden. n 2k+ 1 3 5 7 9 11 2n+ 1 k x x x x x x n x arctan( x)» å( - 1) = x - + - + - +
MehrEinführung in die Informatik 2
Einführung in die Informatik 2 Suchen in Texten Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v.
MehrString Matching 2. Definition Ein Alphabet ist eine nichtleere, endliche Menge S von Zeichen.
1 2 1. Strings Definition Ein Alphabet ist eine nichtleere, endliche Menge S von Zeichen. Ein String über S ist eine endliche Folge S = S(1)S(2)...S(n) von Zeichen S(i) aus S, dessen Länge n wir mit S
MehrAmortisierte Laufzeitanalyse
Paris-Lodron Universität Salzburg 24 Januar, 2014 Inhaltsverzeichnis 1 Einführung Definition Beispiel:Stapeloperationen Beispiel: Binärzähler (1/2) Beispiel: Binärzähler (2/2) 2 Analyse der Stack mittels
MehrLösungsvorschläge. zu den Aufgaben im Kapitel 4
Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere
MehrAlgorithmen und Datenstrukturen WS 2007/2008
Algorithmen und Datenstrukturen WS 2007/2008 Fakultät Informatik Software-Engineering und Technische Informatik Prof. Dr. Matthias Franz mfranz@htwg-konstanz.de www-home.htwg-konstanz.de/~mfranz/heim.html
MehrLexikalische Programmanalyse der Scanner
Der Scanner führt die lexikalische Analyse des Programms durch Er sammelt (scanned) Zeichen für Zeichen und baut logisch zusammengehörige Zeichenketten (Tokens) aus diesen Zeichen Zur formalen Beschreibung
MehrMergesort. Idee. Die folgende Funktion mergesort sortiert eine Folge a vom unteren Index lo bis zum oberen Index hi.
Sortierverfahren Mergesort Das Sortierverfahren Mergesort erzeugt eine sortierte Folge durch Verschmelzen (engl.: to merge) sortierter Teilstücke. Mit einer Zeitkomplexität von (n log(n)) ist das Verfahren
MehrAlgorithmentheorie Randomisierung. Robert Elsässer
Algorithmentheorie 03 - Randomisierung Robert Elsässer Randomisierung Klassen von randomisierten Algorithmen Randomisierter Quicksort Randomisierter Primzahltest Kryptographie 2 1. Klassen von randomisierten
MehrRelationen und DAGs, starker Zusammenhang
Relationen und DAGs, starker Zusammenhang Anmerkung: Sei D = (V, E). Dann ist A V V eine Relation auf V. Sei andererseits R S S eine Relation auf S. Dann definiert D = (S, R) einen DAG. D.h. DAGs sind
Mehr7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
MehrAlgorithmen und Datenstrukturen ITS(B)-B 2016
Einführung Was ist (die) Informatik? Die Informatik und ihre Geschichte sowie ihre Abgrenzung von anderen Wissenschaften darzulegen gestaltet sich nicht ganz einfach (siehe dazu unter vielen Anderen ((GI)
MehrGliederung. Algorithmen und Datenstrukturen I. Eine wichtige Frage. Algorithmus. Materialien zur Vorlesung. Begriffsbestimmung EUKLID Primzahltest
Gliederung Algorithmen und Datenstrukturen I Materialien zur Vorlesung D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Winter 2009/10,
MehrBisher haben wir keine Annahmen bzgl. der Sortierung der gegebenen Werte gemacht, d.h. sie durften in beliebiger Reihenfolge im Array a stehen
4.2.2 Binäre Suche Bisher hben wir keine Annhmen bzgl. der Sortierung der gegebenen Werte gemcht, d.h. sie durften in beliebiger Reihenfolge im Arry stehen Nehmen wir n, dss die Werte im Arry gemäß der
MehrAlgorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor
Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor Organisatorisches: Vorlesung 4 SWS, Zentralübung 2 SWS: 6 Credit Points Mi 9:45 11:15 Raum 1200 (Vorlesung) Do 8:00
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen 3.2 Auswahl an Stringfunktionen W. Tasin, M.Sc. Fakultät 04 tasin@hm.edu Allgemeines (1) Die ANSI-Norm definiert auch nützliche Funktionen zur ASCIIZ-Stringbearbeitung.
MehrObjektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2012/13 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a
MehrADS 2: Algorithmen und Datenstrukturen
ADS 2: Algorithmen und Datenstrukturen Teil I Prof. Peter F. Stadler & Sebastian Will Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität Leipzig 9. April
Mehr