Rückblick: Längste gemeinsame Zeichenkette

Größe: px
Ab Seite anzeigen:

Download "Rückblick: Längste gemeinsame Zeichenkette"

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

Mehr

Effiziente Algorithmen 2

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

Mehr

Algorithmische Bioinformatik 1

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

Mehr

2.2 Der Algorithmus von Knuth, Morris und Pratt

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 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

Mehr

Suche in Texten. Verschiedene Szenarios: Dynamische Texte. Texteditoren Symbolmanipulatoren. Statische Texte

Suche 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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:

Mehr

Algorithmische Bioinformatik 1

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

Mehr

Zeichenketten Benedikt Straßner. Programming Systems Group Martensstr Erlangen Germany

Zeichenketten 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

Mehr

Informatik II, SS 2018

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

Mehr

Informatik II, SS 2016

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

Mehr

Algorithmen und Datenstrukturen II

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

Mehr

String - Matching. Kapitel Definition

String - 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

Mehr

Algorithmen zur exakten Suche in Texten. Algorithmen und Datenstrukturen II 1

Algorithmen 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

Mehr

3.3 Laufzeit von Programmen

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

Mehr

Zeichenketten. Michael Fularczyk Michael Fularczyk Zeichenketten / 41

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

Mehr

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

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

Mehr

Zeichenketten. 10. Mai 2017 Simon Bachstein Simon Bachstein Hallo Welt -Seminar - LS 2 Zeichenketten 1

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

Mehr

Informatik II, SS 2018

Informatik 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

Mehr

5.5 Prioritätswarteschlangen

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

Mehr

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

Mehr

Proseminar String Matching

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

Mehr

Informatikgrundlagen (WS 2016/2017)

Informatikgrundlagen (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

Mehr

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik

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

Mehr

Universität Bremen. Textsuche. Thomas Röfer. Naive Suche Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuche Editierdistanz

Universitä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

Mehr

Zeichenketten. 29. April 2015 Benedikt Lorch. Benedikt Lorch Zeichenketten April

Zeichenketten. 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:

Mehr

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

Mehr

String matching: Überblick

String 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

Mehr

Boyer Moore Algorithmus

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

Mehr

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Algorithmen zur exakten Suche in Texten

Algorithmen 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

Mehr

8.4 Suffixbäume. Anwendungen: Information Retrieval, Bioinformatik (Suche in Sequenzen) Veranschaulichung: DNA-Sequenzen

8.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:

Mehr

5.3 Doppelt verkettete Listen

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

Mehr

Algorithmen und Datenstrukturen

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

Mehr

ADS: Algorithmen und Datenstrukturen 1

ADS: 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]

Mehr

1.3 Knuth-Morris-Pratt-Algorithmus

1.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,

Mehr

INFORMATIK FÜR BIOLOGEN

INFORMATIK 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

Mehr

Algorithmen auf Zeichenketten

Algorithmen 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:

Mehr

Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Sommersemester Dr. Tobias Lasser

Algorithmen 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

Mehr

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert

QuickSort 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

Mehr

Kapitel 5. Textalgorithmen. 5.1 Grundbegriffe

Kapitel 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

Mehr

Informatikgrundlagen (WS 2015/2016)

Informatikgrundlagen (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

Mehr

Algorithmische Bioinformatik 1

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

Mehr

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

Student: 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

Mehr

Berühmte Informatiker

Berü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

Mehr

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

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

Mehr

Einführung in die Informatik 1

Einfü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

Mehr

Praktikum 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 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 Variablen und Konstanten. 4.4. Übersicht 4.1 Ausdrücke 4.2 Funktionale Algorithmen 4.3 Anweisungen 4.4 Imperative Algorithmen 4.4.1 Variablen und Konstanten 4.4.2 Prozeduren 4.4.3 Verzweigung und Iteration 4.4.4 Globale Größen Einführung

Mehr

Textsuche. Textsuche

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

Mehr

Algorithmen & Datenstrukturen Midterm Test 2

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

Mehr

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

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

Mehr

Aufgabe (Schreibtischtest, Algorithmenanalyse)

Aufgabe (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

Mehr

Mathematisches Praktikum - SoSe 2014

Mathematisches 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

Mehr

19. Dynamic Programming I

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

Mehr

Mathematisches Praktikum - SoSe 2015

Mathematisches 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,

Mehr

Algorithmen auf Sequenzen Vorbereitung zur Prüfung

Algorithmen 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

Mehr

8. Mustersuche in Zeichenketten

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

Mehr

Clevere Algorithmen programmieren

Clevere 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

Mehr

Algorithmen und Datenstrukturen (Informatik II) SS Klausur

Algorithmen 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 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

Einfü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. 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

Mehr

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 3

UE 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

Mehr

Algorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen

Algorithmen 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:

Mehr

1 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 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

Mehr

Vorlesung 2 KÜRZESTE WEGE

Vorlesung 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!

Mehr

Datenstrukturen. Sommersemester Kapitel 1: Motivation / Grundlagen. Steffen Lange

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

Mehr

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

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

Mehr

19. Dynamic Programming I

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Kapitel 5: Dynamisches Programmieren Gliederung

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

Mehr

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

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

Mehr

Übung Algorithmen und Datenstrukturen

Ü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

Mehr

Zentralübung Grundlagen der Programmierung

Zentralü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

Mehr

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

Teil 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

Mehr

Aufgabe (Schreibtischtest, lexikographische Ordnung)

Aufgabe (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

Mehr

Rückblick: Starke Zusammenhangskomponenten

Rü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 (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 - + - + - +

Mehr

Einführung in die Informatik 2

Einfü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.

Mehr

String Matching 2. Definition Ein Alphabet ist eine nichtleere, endliche Menge S von Zeichen.

String 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

Mehr

Amortisierte Laufzeitanalyse

Amortisierte 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

Mehr

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Lö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

Mehr

Algorithmen und Datenstrukturen WS 2007/2008

Algorithmen 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

Mehr

Lexikalische Programmanalyse der Scanner

Lexikalische 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

Mehr

Mergesort. Idee. Die folgende Funktion mergesort sortiert eine Folge a vom unteren Index lo bis zum oberen Index hi.

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

Mehr

Algorithmentheorie Randomisierung. Robert Elsässer

Algorithmentheorie 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

Mehr

Relationen und DAGs, starker Zusammenhang

Relationen 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

Mehr

7. Sortieren Lernziele. 7. Sortieren

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

Mehr

Algorithmen und Datenstrukturen ITS(B)-B 2016

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

Mehr

Gliederung. Algorithmen und Datenstrukturen I. Eine wichtige Frage. Algorithmus. Materialien zur Vorlesung. Begriffsbestimmung EUKLID Primzahltest

Gliederung. 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,

Mehr

Bisher haben wir keine Annahmen bzgl. der Sortierung der gegebenen Werte gemacht, d.h. sie durften in beliebiger Reihenfolge im Array a stehen

Bisher 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

Mehr

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor

Algorithmen 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

Mehr

Algorithmen und Datenstrukturen

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

Mehr

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

ADS 2: Algorithmen und Datenstrukturen

ADS 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