Mit schrift zum AlgoDat Rep. 12- 06- 2002 Creat ed by Am an At r i Algodat Repet it orium - Mit schrift vom 12.06.02 ver1.1 Gegeben sei ein Feld A= < 4,2,17,…,10> ; die Er m it t lung des Dat ensat zes an einer best im m t en Posit ion im Feld erfolgt in konst ant er Zeit . z.B.: A[ 1] = 4 , A[ 2] = 2 , A[ n] = 10 Zum Suchen nach einem best im m t en Elem ent im Feld A: Suchalgor it hm en: ,WHUDWLYH9DULDQWHGHUOLQHDUHQ6XFKH A l go r i t hm u s 1 : Suche(A,n,k) //A ist das Feld, n Anzahl der Daten im Feld, k die gesuchte Zahl { für i= 1,…..,n { if A[i] == k return (i) // liefert die Position des gesuchten Elements zurück } return FEHLER; //falls nix gefunden wurde -> Fehler retournieren } %HVFKUHLEXQJ Man übergibt der Prozedur / Met hode “ Suche“ die Par am et er Feld A, die Länge n des Feldes ( = in unser em Bsp.: Anzahl der Zahlen) , und die gesucht e Zahl N. Der Algor it hm us geht nun von der HUVWHQ Zahl des Feldes bis zur QWHQ und v ergleicht sie m it der zu suchenden Zahl N. St im m en beide über ein so, w ird der Feldindex L ( also die Posit ion von k im Feld A) ret our niert . I st nun unser e Für - Schleife am Ende angelangt ( spr ich i= n) und es w urde noch im m er nicht s gefunden, liefert das Program m einen Fehler wert zur ück d.h. N befindet sich gar nicht im Feld A. $QDO\VH des obigen Algor it hm us: BEST CASE: 1 Schr it t ( die Zahl, die ich suche, st eht gleich am Anfang des Felds) WORST CASE: n Schr it t e - ich finde Zahl als let zt es Elem ent im Feld oder gar nicht AVG CASE: Q 2 Schr it t e: - im Durchschnit t ist die Zahl in der Mit t e des Felds +LQZHLV I m obigen Algor it hm us m uss das Feld A NI CHT sort iert sein. Da j a sow ieso j edes Elem ent überpr üft wird. Bei den unt en folgenden Algor it hm en ist vorauszuset zen, dass das Feld sort iert ist ! A l go r i t hm u s 2 : I t erat iv e Version der YHUEHVVHUWHQOLQHDUHQ6XFKH : Feld A. Man erm it t elt die Mit t e P des Feldes %HVFKUHLEXQJ Gegeben sei ein sort iert es und überpr üft , ob es sich beim Dat ensat z an dieser Posit ion um das gesucht e Elem ent handelt . I st dies der Fall, so gibt der Algor it hm us P zur ück und st oppt , falls nicht , so schaut das Program m , ob k k leiner oder gr ößer als A[ m ] ist , und VXFKW OLQHDU ( siehe Seit e 1 von 7 Mit schrift zum AlgoDat Rep. 12- 06- 2002 Algor it hm us 1) ent w eder in der erst en Hälft e oder in der zweit en.( s.Abb.1) Vort eil gegenüber Algo1 : Man m uss j et zt nicht m ehr das kom plet t e, sonder n nur das halbe Feld durchsuchen. Also m ax . Q 2 Schr it t e für die Suche. Beispiel: A = < 1,2,4,8,9,10,26> . Gesucht wird die Zahl k = 10. Da k größer 4 ( = A[ m ] ) ist erpar ich m ir die Suche in der erst en Hälft e und st öber e nur im Feld < 8,9,10,26> . …oder die andere Entweder 1.Hälfte... Abb.1 A l go r i t hm u s 2 : verbesserte_lineare_Suche(A,n,k) { m:= Q 2 ; if (k == A[m]) return (m); // Falls die gesuchte Zahl genau in der Mitte ist… // liefere die Position m zurück else if (k < A[m]) { für i = 1,…,m-1 // suche in der ersten Hälfte { if (A[i] == k) return (i); } } else { für i = m+1,…,n { if (A[i] == k) //...sonst suche in der 2ten Hälfe return (i); } } return FEHLER; // ist k nicht in A enthalten Æ Fehler! } L a u f ze i t -A n a l y s e : BEST CASE: 1 Schr it t – das Elem ent ist genau die Mit t e des Feldes also k= A[ m ] Q 4 Schr it t e - k befindet sich in der Mit t e einer HÄLFTE des Feldes Q WORST CASE: ~ Schr it t e – k befindet sich am ENDE einer HÄLFTE des Feldes. 2 AVG CASE: ~ Seit e 2 von 7 Mit schrift zum AlgoDat Rep. 12- 06- 2002 I dee der ELQlUHQ6XFKH: Während bei der „ verbessert en Linear en Suche“ die einzelnen Hälft en w ieder um linear durchsucht wurden, wir d bei der binären Suche, das Feld zw eiget eilt wird, geschaut , ob das Elem ent in der linken oder r echt en Hälft e sein könnt e, ( Abb. 2) und diese Hälft e wiederum get eilt , et c. und dieser Prozess wir d solange fort geset zt , bis das gesucht e Elem ent gefunden wur de oder die Hälft en nicht m ehr t eilbar sind ( Æ k ist nicht in A ent halt en) . Die Laufzeit en der beiden obigen Algor it hm en v er halt en sich OLQHDU währ end die binär e Suche ORJDULWKPLVFK abläuft . Abb.2 – Binäre Suche: Hälft en w er den wieder aufget eilt . Wieso logar it hm isch ? Bet racht en w ir das an einem Beispiel: Wir haben ein $UUD\ ( = Feld) aus 8 Elem ent en: A= < 1,2,4,8,9,10,26,30> und w ir suchen die Zahl 26. Nach dem Algorit hm us der binären Suche brauchen w ir hier m ax. 3 Schr it t e ( s.Abb.3) um irgendein Elem ent in einem Feld der Größe 8 zu erm it t eln. Abb.3 - Größe des Feldes n= 8, m ax .Schr it t = 3 3 = 2³ 6FKULWWH Binär e Suche ( BS) als UHNXUVLYH'HILQLWLRQ ORJ Q : Q 2 Q BS( < a 1 ,a 2 ,a 3 ,…a n > ,k ) = %6 (< D1 , D 2 ,..., D >, N ) + 2 −1 2 %6 (< D ,..., D > 2 +1 IU ..... N IU ..... N IU ..... N Q 2 Q < $ 2 Q < $ 2 = $ Bei einem leer en Feld also < a 1 ,a 2 ,, …a n > = < > wird ein FEHLER zurück geliefert . Seit e 3 von 7 Mit schrift zum AlgoDat Rep. 12- 06- 2002 A l go r i t hm u s 3 binäre_suche(A,n,k) if (n==0) return (FEHLER); { else Q ; 2 m= if (A[m]==k) return m; else if (k<A[m]) return (binäre_suche(<a1,a2,…am-1>,m-1,k); else return (binäre_suche(<am+1,…an>,m,k) +m; //siehe Anmerkung unten *) } * ) Wieso + m ? Der Algorit hm us ruft sich selber auf. Bei der Suche in der 2t en Hälft e, w ird diese w iederum als ein „ neues“ Feld angenom m en ( das w ieder von 1 anfängt ) .Für sich genom m en fängt dieser Array schon von eins an, dann zw ei, dann drei, et c., aber absolut gesehen ( im Bezug auf den großen ursprünglichen Array, von dem w ir j a dann die Suchposit ion erm it t eln w ollen, w ürde das Ergebnis verfälscht w erden. Bsp.: unsere suchen Zahl in einem n= 8 großen Array. Wir finden die Zahl an der Wir ohne + m w ürde uns „ 2“ ret urniert w erden und w ir w ürden in der unserem „ ürsprüngl. Array“ an der St elle 2 nicht die richt ige Zahl finden, weil j a „ 2“ auf die 2t e 2+ 4 = 6. Hälft e bezieht also: r et urnw ert + m +LQZHLV • Für Übungszwecke wär en folgende Algor it hm en sicher sehr int eressant ; - ) ,WHUDWLYH 9HUVLRQ GHU ELQlUHQ 6XFKH ( Acht ung unser Algor it hm us 3 ist rekursiv ) • 5HNXUVLYH9HUVLRQGHUYHUEHVVHUWHQOLQHDUHQ6XFKH Anm .d.Aut ors: Wenn’s geht bit t e im FORUM post en ! /DXI]HLWHQ Laufzeit en m it konst ant em Fakt or sind ver nachlässigbar und m achen k einen wirk lich großen Unt erschied aus. z.B. Laufzeit en von Algor it hm us 1 ( n ) oder Algor it hm us 2 ( n/ 2) . Allerdings ist der logar it hm ische Aufwand deut lich besser als ein linear er ( s.Abb4) . Abb.4 Laufzeit en der 3 Algorit hm en Seit e 4 von 7 Mit schrift zum AlgoDat Rep. 12- 06- 2002 T H ET A – OM EGA – O – N o t a t i o ne n : Θ( J (Q)) = “ Menge aller Funkt ionen f( n) , die ca. so gut w ie g( n) sind.“ Definit ionen: Θ( J (Q)) = {I (Q) | ∃F1 , F 2 > 0, Q0 > 0 : ....VRGDV..0 ≤ I (Q) ⋅ F1 ≤ J (Q) ≤ I (Q) ⋅ F 2 .....∀Q ≥ Q0 } Ο( J ( Q)) = {I ( Q) | ∃F > 0, Q0 > 0 : ....VRGDV..0 ≤ I ( Q) ⋅ F ≤ J ( Q).........∀Q ≥ Q0 } Ω( J (Q)) = {I (Q) | ∃F > 0, Q0 > 0 : ....VRGDV..0 ≤ J (Q) ⋅ F ≤ I (Q).........∀Q ≥ Q0 } Alle Funkt ionen, die im hellt ür kisen Ber eich liegen befinden sich in Ω( J (Q)) , im gelben in O( g( n) ) .I n Abb.5 ist außerdem zu er kennen, dass die Funkt ion g( n) = n² im I nt er vall [ 0,n 0 ] schneller zu wachsen scheint , als f( n) = n 4 , doch ab einem n 0 er kennen wir, dass im Unendlichen f( n) doch schneller ist als g( n) Æ :LU LQWHUHVVLHUHQXQVQXUIUJURHQ ! ! Abb5. :LFKWLJH5HJHOQKLOIUHLFKIUGLH3UIXQJIUGLH.UHX]OIUDJHQ • • • • • I ( Q ) ∈ Θ( J ( Q)) ⇒ J ( Q ) ∈ Θ( I ( Q )) Θ( J (Q)) = Ο( J (Q)) ∩ Ω( J (Q)) o I ( Q ) = Θ ( J ( Q)) ⇒ I ( Q ) = 2 ( J ( Q)) ⇒ I (Q) = Ω( J (Q)) I ( Q ) = 2 ( J ( Q )) ⇒ / I (Q) = Θ( J (Q)) I ( Q ) = Θ ( J ( Q)) ⇔ J ( Q ) = Θ( J ( Q )) I ( Q ) = Ο( J ( Q)) ⇔ J ( Q) = Ω ( I ( Q )) +LQZHLV Bei Thet a, Om ega, O- Not at ionen w erden das ∈ und das = gleichw ert ig behandelt , also nicht v erw ir ren lassen. Bsp. 1: Gegeben: f( n) = 18n 3 + n 4 , g( n) = Q 4 2 Gelt en folgende Aussagen? a) I (Q) ∈ Θ( J (Q)) b) I ( Q ) ∈ Θ( Q 2 ) Seit e 5 von 7 Mit schrift zum AlgoDat Rep. 12- 06- 2002 I a) (Q) ∈ Θ( J (Q)) ⇔ 18Q + Q 3 4 Q4 ∈ Θ 2 ⇔ ∃F1 , F 2 > 0, Q0 > 0....... : 0 ≤ ⇔ ∃F1 , F 2 > 0, Q0 > 0....... : 0 ≤ Q 4 2 F 1 ⋅ F1 ≤ 18Q 3 + Q 4 ≤ ≤ 36 Q Q 4 2 ⋅ F2 + 2 ≤ F 2 ...............JLOIW..∀Q ≥ Q0 Gilt für n 0 = 1, c 1 = 1, c2 = 38 I b) (Q) ∈ Θ(Q 2 ) ⇔ 18Q 3 + Q 4 ∈ Θ(Q 2 ) ⇔ ∃F1 , F 2 > 0, Q0 ≥ 0 : 0 ≤ F1 ⋅ Q 2 ≤ 18Q 3 + Q 4 ≤ F 2 ⋅ Q 2 ⇔ ∃F1 , F 2 > 0, Q0 ≥ 0 : 0 ≤ F1 ≤ 18Q + Q 2 ≤ F 2 Ein c 1 lässt sich leicht finden z. B. c 1 = 1 und n 0 = 1 da 2 lim (18Q + Q ) = ∞ Æ aber ein c 2 kann m an NI CHT finden ( w ir int er essieren uns j a für große n) und som it ex ist iert KEI NE →∞ Konst ant e, die gr ößer als Unendlich ist . – logisch ; - ) Som it haben wir $XVVDJHEZLGHUOHJW! Bsp2. I 3Q 2 ( Q) = 3 2 Q gilt I ZHQQ ....3 | Q ZHQQ...3 /| Q 29 ( Q ) = Ο Q 3 ? 10 +LQZHLV 3| n liest sich als „ 3 t eilt n“ und heißt im übert ragenen Sinne QPRG Wir über legen uns: auch im Unendlichen wir es im m er Zahlen geben die durch 3 t eilbar sind, bzw. Zahlen die nicht durch 3 t eilbar sind. d.h.: es m üssen EHLGH Bedingungen in O( g( n) ) liegen. 1.Bedingung: 2.Bedingung: 29 3Q 2 ∈ Ο Q 3 10 29 2 Q 3 ∈ 2 Q 3 30 ⇔ ∃F > 0, Q0 > 0........0 ≤ 3Q ∀Q ≥ Q0 0≤ JLOW 2 29 ≤ F ⋅ Q3 10 30 ≤F 29Q für ein n 0 = 1 und c= 2. ⇔ ∃F > 0, Q0 > 0 0 ≤ 2Q 3 ≤ F ⋅ 0≤ ∀Q0 ≤ Q 29 3 Q 30 60 ≤F 29 JLOW für ein beliebiges n 0 und ein c = 60/ 29 Da nun beide Aussagen richt ig sind, liegt f( n) in O( g( n) ) . Seit e 6 von 7 Mit schrift zum AlgoDat Rep. 12- 06- 2002 Bsp. 3: I Q ( Q) = 9 =1 Q² ∑ ....Q > 1000 IU ...Q ≤ 1000 IU hEHUOHJXQJ I m Gegensat z zum v or igen Beispiel, haben w ir hier unser n beschränkt , also wenn n gr ößer als 1000 ist dann nim m t f( n) = n an. Wie schon vor her behaupt et , int eressier en wir uns nur für gr oße n also nur für n > 1000. So können wir unser n 0 = 1001 wählen, und som it ist die XQWHUH %HGLQJXQJ GLH PLW GHP 6XPPHQ]HLFKHQZHUWORV. Zum w eit er en Beweis ob f( n) in O( g( n) ) et c. liegt , genügt es hier nur zu zeigen ob Q 2JQ liegt . 7LSS Bei der Pr üfung genau über legen, wie v erhält sich m eine Funkt ion im Unendlichen, st eht bei der Angabe ir gendet was w ie 3 t eilt n , oder n Pr im zahl oder nicht Pr im zahl, n gerade oder ungerade, et c. so m üssen %(,'( Funkt ionsbedingungen erfüllt werde, da beide im Unendlichen gelt en. I m Falle einer „ zählbaren Lim it ierung“ z. B. n< 1000. ersparen w ir uns die Mühe und wählen unser n 0 so , dass es knapp „ über“ dem Lim it liegt , z.B. n 0 = 1001. /HW]WH.RUUHNWXU [email protected] )HKOHUKLQZHLVHELWWHDQ Seit e 7 von 7