1 Die Invariantentechnik. Algorithmen mit Intervallen. s = 0; i = 0; // i <= M while (i < M) { s = s + f(i); i = i + 1 ; // i <= M.

Ähnliche Dokumente

Verteilte Systeme/Sicherheit im Internet

15+9 = 24 8 = 41 6 = 44+4 = 45 5 = = = = = 26 7 = 13 6 = = 27+6 = = =

= 27

Peter Gienow Nr.11 Einfach heilen!

Ð ÖØ Ø ÓÒ Ò Ñ Ø ÚÓÒ Ò Æ ØÙÖÛ Ò ØÐ Ò ÙÐØØ Ò Ö ÍÒ Ú Ö¹ ØØ ÖÐ Ò Ò¹Æ ÖÒ Ö Ì Ö Ñ Ò Ð Ò ÈÖ ÙÒ ÎÓÖ ØÞ Ò Ö Ö ÈÖÓÑÓØ ÓÒ ÓÑÑ ÓÒ Ö Ø Ö Ø Ö Ø ØØ Ö Û Ø Ö Ø Ö Ø ØØ





ÁÒ ÐØ Ú ÖÞ Ò ½ ÒÐ ØÙÒ ½¼ ½º½ ÎÓÖÛÓÖØ ÚÓÒ Ñ Ö º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º º ½¼ ½º¾ ÎÓÖÛÓÖØ ÚÓÒ ÓÑ Ò ÕÙ º º º º º º º

Ò Ö Ø Ö ÙØ Ø Ö Û Ø Ö ÙØ Ø Ö Ì Ö Ñ Ò Ð Ò ÈÖ ÙÒ Ì Ö ÈÖÓÑÓØ ÓÒ ÈÖÓ ÓÖ Öº ƺ Ë Ñ ØÞ ÈÖÓ ÓÖ Öº Ϻ º Ë ØØ Ö ÈÖÓ ÓÖ Öº Àº Ö ¾ º¼ º ¾ º¼ º


9 Dynamische Programmierung (Tabellierung)


x y x+y x+15 y 4 x+y 7


Ò Ù Ù Ò Ë ØÞÚ ÒØ Ð Ó Ò ÖÓ ÐÛ Ö ÙÒ µ ÙÒ ÃÓÐ ÒÚ Ò¹ Ø Ð Ñ Ø ÖÓ ÐÛ Ö ÙÒ µ B A B A ØØ ÙÒ Ö Ø ÙÖ Ñ Ò Ð ØÖÓÑ Ò Ø Ý Ö ÙÐ Ó Ö ÔÒ ÙÑ Ø ËØ ÐÐ Ò Ø Ò Ò Ö Ø ÙÖ Ý Ö



Wirtschaftlichkeit und optimaler Betrieb von KWK-Anlagen unter den neuen energiewirtschaftlichen Rahmenbedingungen




Stefan Michaelis E S. Lehrstuhl für Elektronische Systeme und Vermittlungstechnik. Lehrstuhl für Künstliche Intelligenz


Ê Ö ÒØ ÈÖÓ º Öº ÏÓÐ Ò ÖØÑ Ö ÃÓÖÖ Ö ÒØ ÈÖÓ º Öº Â Ò ÖÐØ Ì Ö ÈÖÓÑÓØ ÓÒ ½ º ¼ º ¾¼¼



TUM INSTITUT FÜR INFORMATIK. Internet -Buchhandel Eine Fallstudie für die Anwendung von Softwareentwicklungstechniken mit der UML

½º ÒÐ ØÙÒ ¾º Î Ö Ð Ò Ð Ø ÓÒ Ð Ò Ö Ö Ê Ö ÓÒ º ÍÒ Ú Ö Ø ÒÓÒÔ Ö Ñ ØÖ Ê Ö ÓÒ º Ø ÒØÖ Ò ÓÖÑ Ø ÓÒ º ÊÓ Ù Ø Ë ØÞÙÒ º Ø Ú Ñ Ô Ö Ñ ØÖ Ê Ö ÓÒ ½







Spaltung. Fusion. E/M [MeV/amu] 2 H Massenzahl M. 62 Ni 3 H 1 H

PTBS Belastung unterschiedlicher Populationen




Elektrische Feldstärke [a.u.] THz-Puls Delay [ps] Pump-Probe Delay [ps]


Superharte, unterschiedlich gradierte PVD-Kohlenstoffschichten mit und ohne Zusätze von Titan und Silizium

)XQGDPHQWDOH &3$ /DVHU QP 6WHXHUXQJ 'DWHQDXIQDKPH 9HU] JHUXQJV VWUH NH /R N,Q :HL OL KWN YHWWH KURPDWRU 3KRWRGLRGH )LOWHU,) =HUKD NHU 0RQR 3UREH




BS Registers/Home Network HLR/AuC

Grundtypen von Lägern







Von Zeit zu Zeit ist man gezwungen, ein fsck manuell auszuführen. Sehen Sie sich dazu einfach das folgende Beispiel an:

Strategische Standortplanung in Reverse-Logistik-Netzwerken - Eine empirische und modellgestützte Analyse

A BC T EF

¾¾ Ö ÙÖ Ã Ô Ò Ù Ö¹ÁÒ Ø ØÙØ Ö ËÓÒÒ ÒÔ Ý Ë Ö Ø Ö Ø ÙÒ Î ÖÛ ÐØÙÒ º Ⱥ à ÑÑ Ö Íº ÊÝÒ ÖÞ Û Î ÖÛ ÐØÙÒ Ð ØÙÒ µ Àº ËØÖÓ º ÈÖ Ø Ò Ò Åº Ò Ù Ö ½º½¾ºµº Ì Ò È Ö ÓÒ

Security. Privacy. Authentity

Interoperabilität. Semantische Heterogenität (Datenmodell, Schema, Instanzen) Strukturelle Heterogenität (Datenmodell, Schema, Instanzen)

Scheduling und Ressourcenverwaltung in Realzeitsystemen

Integriertes Management großer Web-Sites auf der Basis datenbankbasierter Modellierungskonzepte


Sicher ist sicher: Backup und restore Einleitung Hallo Schatz, habe die Diskette gefunden, die du gestern so verzweifelt gesucht hast.







Bachelor- Vertiefungspraktikum Informationstechnik

Bachelor- Vertiefungspraktikum Informationstechnik


Abschlussklausur Cluster-, Grid- und Cloud-Computing (CGC) Dr. Christian Baun

Die Entdeckung des Gluons

Sectoral Adjustment of Employment: The Impact of Outsourcing and Trade at the Micro Level


PROCEEDINGS der Verbundtagung VertIS 2001








Trustworthy Preservation Planning. Christoph Becker. nestor edition 4

ÏÓÞÙ ÑÙÐØ Ð Ò Ù Ð Ö ÑÑ Ø Ò ÈÖ Ø ÒØ Ö ÒØ ÙÖ Ò Ù Í Ö ØÞÙÒ Ò Ò Ò Ñ ÒÛ Ò ÙÒ Ö Ð Ø Ò Ö Ö ÒÛ Ò ÙÒ Ô Þ Ë Ñ ÒØ ÞÙÖ Ò Ò ÙÒ Ò ËÓ ØÛ Ö ÔÖÓ Ù Ø Ñ Ø ÔÖ Ð Ò ÒØ Ð Ò


ËØ ¾ ÚÓÒ ½µ ÁÒ½º ÅÓÐÐÖÙÒ ÙÒ ÈÖÓÖÑÑÖÙÒ Áº ½º ËÔ ÐÓÐ ÙØ²Ò Ö ØØ ÐÐ ÒÙÒÒ ÑØ ÀÒÐ¹È Ù ÙÑ ÒÐÐ ÙÒ ÙÒÓÑÔÐÞÖØ ØÐÐÙÒÒ ÙÒ ÊÒÙÒÒ ÚÖÛÐØÒ ÞÙ ÒÒÒº ÞÙ ÛÖÒ ÐÐ ÒÓØÒÒ ÖØ








¾

Transkript:

ĐÍ ÖÐ Ò Û Ö Ó ÈÖÓ Ö ÑÑ Ò Ò Ù ÖÙÒ Ò ÒĐÙ Ø Û Öº ÐØ ÙÒ ÒÓ Ë ÐÙ ÞÙ ÖÙÒ º Ë Û Ö ÒÙÖ ÒÒ ÆÙÒ 1 Die Invariantentechnik Algorithmen mit Intervallen Ò Û Ø Å Ø Ó ÞÙÑ Ö Ø ÐÐ Ò Ö ÒØ ÖØ ÓÖÖ Ø Ö ÈÖÓ Ö ÑÑ Ø ÁÒÚ Ö ÒØ ÒØ Ò º ÒÒÓØ ÖØ Ñ Ò Ò ÒØÐ Ò ÈÖÓ Ö ÑÑØ ÜØ Ñ Ø ÃÓÑÑ ÒØ Ö Ò Ù ÐÓ Ò ÓÖÑ ÐÒ Ó Ò ÒÒØ Ò Ð ÒÛ Ò ÙÒ ĐÙÖ Ò ÁÒØ ÖÚ ÐÐ Ö «ÛÓÐÐ Ò Û Ö Ò Ô Ö ØÝÔ Ù ÖÙÒ Ò Ø Òº Ð ÓÖ Ø Ñ Ò ÔÖ Ò ÙÒ Ù Ò ÃÓÒ ØÖÙ Ø ÓÒ ÔÖ ÒÞ Ô Ò ĐÙÖ ÈÖÓ Ö ÑÑ ÒÒ ÒÐ ÖÒ Òº Ù ÖÙÒ Ò Û Ö Ò Û Ð ÚÓÖ Ó Ö Ò ÈÖÓ Ö Ñѹ ÒÛ ÙÒ Ò Ò ĐÙ Ø ÑÙ Ö Ò Ø Ò Ö ÑĐÓ Ð Ò Û Ö Ò Û Ö ÒÙÖ Ã ÖÒ ØĐÙ Ö Û Ð Ò ÈÖÓ Ö ÑÑ Ù Ö Ò Î Ö Ò ÖÙÒ Ò Ö ÞÙ ĐÓÖ Ò Î Ö Ð Ò ÙÒ Definition 1.0.1 Ò ÈÖÓ Ö ÑÑ Ø ÞĐÙ Ð Ò Ö ËØ ÐÐ Ù Ø Ø Đ Ð Ò Ù ÖÙÒ Ø Òº Ò ØØÙÒ Ò Ò À ÙÔØÔÖÓ Ö ÑÑ ÓÐÐØ Ò Û Ð Ð Ö Òº Ù ÖÙÒ Ò ÓÖÖ Ø Û ÒÒ Ñ Ð Û ÒÒ Ñ Ð Ù ÈÖÓ Ö ÑÑ Ò ËØ ÐÐ Ñ Ø Ò Ö Ù ÖÙÒ ÖÖ Ø Û Ö c B. Möller ß ½ ß Diskrete Strukt. WS 09/10 Û Ö Øº c B. Möller ß ¾ ß Diskrete Strukt. WS 09/10 Beispiel 1.0.2 Ï Ö ÛÓÐÐ Ò Ï ÖØ Ò Ö ÙÒ Ø ÓÒ int f (int) M Ò ØĐÙÖÐ Ð Ø ÐØ Ò Ö ÁÒ Ø Ð ÖÙÒ ÙÒ Ñ Ø ĐÙÖ Ö Ø Ò M Ò ØĐÙÖÐ Ò Ð Ò ÙÑÑ Ö Ò M Ò ÃÓÒ Ø ÒØ µ Ò ØĐÙÖÐ Þ Ð s = 0; i = 0; // i <= M while (i < M) { s = s + f(i); i = i + 1 ; // i <= M // i == M ÚÓÖ Ù ĐÙ ÖÙÒ Ö Ë Ð µ i = 0 Ø Ø Đ Ð i <= Mº Ë Ð Û Ö ÒÙÖ ØÖ Ø Ò Û ÒÒi < M Ðغ ÒÒ Øi+1 <= M Ð Ó Ö Ò Ù Ï ÖØ ÚÓÒ i Ò Ö ÙÛ ÙÒ i = i+1 Ù <= Mº Ñ Ø Ø Ù ÖÙÒ Ù ÚÓÖ Ñ ÒĐ Ø Ò Ë Ð Ò¹ ÙÖ Ð Ù Û Ö Ù Ûº º º Ñ Ð Û ÒÒ ÖÖ Ø Û Ö Ø ÖÖ Ø Û ÒÒ Ë Ð Ø ÖÑ Ò ÖØ º º ÞÙÑ Ò ÓÑÑغ Ø ÒÙÖ ÒÒ Û ÒÒ Ð Ð Ë Ð Ò Ò ÙÒ i < M Ð Û Ö º º i >= M Ðغ c B. Möller ß ß Diskrete Strukt. WS 09/10 c B. Möller ß ß Diskrete Strukt. WS 09/10

Ë Ð º Ø ÓÐ Ò Ð Ö Ë Ò I Ù Ö Ñ 1 I ÙÒ 2 Ò Ö ÁÒÚ Ö ÒØ Ò 0 Ö Ø ÓÒ Ò º Ð Ñ ÒØ s Ñ Ø 0 Ò Ø Ð ÖØ ÛÙÖ ÐØ Ð Ó ÙÒÑ ØØ Ð Ö ÚÓÖ Ö Definition 1.0.3 Ë I Ò Ù ÖÙÒ Ñ Ø ÓÐ Ò Ö Ò Ø ÐØ I ÚÓÖ Ö Ù ĐÙ ÖÙÒ Ò Ö Ë Ð while(b)s ÙÒ Ò Ö Ö Ø ØØ Ò Û Ö ÙÒ ÚÓÖ Ö ĐÙ ÖÐ Ø Ò Ñ Û Ö Ë Ð ØÖ Ø Ò º º Ø Ù B Û Ö Ó ÐØ Ò Ù ĐÙ ÖÙÒ Ë Ð ÒÖÙÑÔ S Û Ö Iº Ë Ð Ò ÙÖ Ð Ù Û Ö i <= M Ðغ Ù Ö ÒØ ÝÑÑ ØÖ ÚÓÒ <= ÓÐ Ø Ö Ñ Ò i == M Û Ö Ò ÑÙ º ÒÒ Ø I Ò ÁÒÚ Ö ÒØ Ö Ë Ð º ÁÑ Ó Ò Ô Ð Ø Ð Ó i <= M Ò ÁÒÚ Ö ÒØ Ö Ë Ð º Ñ Ø Ø ÈÖÓ Ö ÑÑ Ò Ö Ì Ø ÞĐÙ Ð Ò Ö Ù ÖÙÒ¹ Ò ÓÖÖ Øº ÁÑ ÐÐ Ñ Ò Ò Ø Ú Ð ÁÒÚ Ö ÒØ Ò ÞÙ Ò Ö Ø ÑÑØ Ò Ë Ð Ó Ù I 1 I 2 º c B. Möller ß ß Diskrete Strukt. WS 09/10 c B. Möller ß ß Diskrete Strukt. WS 09/10 Beispiel 1.0.4 ÁÒ ÙÒ Ö Ñ ÚÓÖ Ò Ô Ð ÛÓÐÐ Ò Û Ö Ù ÒÓ ØÛ ĐÙ Ö Î Ö ÐØ Ò Ö Î Ö Ð s Ù Òº ÆÙÒ ÛÓÐÐ Ò Û Ö Ò Ù ÓÖÑ Ð s == tsum(f,i) Ò ÁÒÚ Ö ÒØ Ö Ë Ð Øº Ù ÚÓÒ s Ø Ö ØØÛ ÑØ ÙÑÑ ÙÑÙÐ ØÓÖÚ Ö Ð º tsum(f,i) = 1 j=0 f(j) = 0 Æ Ö ÁÒ Ø Ð ÖÙÒ i = 0 ÐØ ÒÞÙ Đ Ù Ò Ò ÓÐ Î Ö Ð Ò ÒÒØ Ñ Ò Ù ÍÑ Ö Î Ö ÐØ Ò ÞÙ Ö Ò Ò Ö Ò Û Ö ÞÙÒĐ Ø Ì Ð ÙÑÑ Ö ÙÒ Ø ÓÒ Û ÖØ Ñ Ø Ö ÙÑ ÒØ Ò Ñ ÁÒØ ÖÚ ÐÐ [0,i-1] Ð tsum(f,i) = i 1 j=0 f(j) Ë Ð Ò Ö Ì Ø s == tsum(f,i)º Û Ð Ð Ö ËÙÑÑ Ò Ú Ö Ö ÙÒ ÑĐ Ð Ñ Ò ÙØÖ Ð Ò c B. Möller ß ß Diskrete Strukt. WS 09/10 c B. Möller ß ß Diskrete Strukt. WS 09/10

Å Ø À Ð ÚÓÒ ÁÒÚ Ö ÒØ Ò ÒÒ Ñ Ò ÒÙÒ Ò ÃÓÖÖ Ø Ø Ù ĐÙÖ Ë Ð Ò Ò ĐÙÖ ÐÐ Å Ð Û Ò Satz 1.0.5 Ò Ò Ò Ë Ð while(b)s Ò ÆÙÒ ÐØ s == tsum(f,i) ÙÒ Ö Ë Ð ÒÖÙÑÔ Û Ö ØÖ ¹ i 1 s == ( Ø Òº ÒÒ Û Ö ÓÖØ ÞÙÒĐ Ø s ÙÑ f(i) Ö ĐÓ Ø Ð Ó ÐØ ÒÒ j=0 f(j)) + f(i) == i j=0 f(j) == tsum(f,i+1) ÁÒ Ø Ð ÖÙÒ ÒÛ ÙÒ A ÓÛ Ù ÖÙÒ Ò V ÎÓÖ Ò ÙÒ µ N Æ Ò ÙÒ µ ÙÒ I ÁÒÚ Ö ÒØ µ Ñ Ø ÓÐ Ò Ò Ò Ø Ò Æ A ÐØ Vº ÐØ V I ÁÒ¹ÃÖ Ø¹Ë ØÞ Ò Ö ÁÒÚ Ö ÒØ Ò Ò Ð Ò i ÙÑ 1 Ö ĐÓ Ø Û Ö Ò Û Ö ÁÒÚ Ö ÒØ s == Û Ö Ö Ø ÐÐغ tsum(f,i) ÁÒ Ù Ø ÓÒ Ò Ò µº I Ø ÁÒÚ Ö ÒØ Ö Ë Ð Ö ÐØ Ò Ö ÁÒÚ Ö ÒØ Ò ÁÒ Ù Ø ÓÒ Ö ØØ µº ÐØ I B N Ë ÐÙ ØÖ ØÙÒ µº c B. Möller ß ß Diskrete Strukt. WS 09/10 c B. Möller ß ½¼ ß Diskrete Strukt. WS 09/10 Beweis: Ò ÎÓÖ Ù ØÞÙÒ V Ò A ÐØ ÒĐÙ Ø Ò ÞÙÛ Ò N Ò Ë Ð Ò Ò Ðغ Ø ÈÖÓ Ö ÑÑ ÒÒ A // V while (B) S // N Ò Ù ÖÙÒ ÑÑ Ö ÒÒ ÐØ Û ÒÒ ÖÖ Ø Û Ö º Ï ÒÒ Ð Ó Ë Ð Ò Ø Ø ÖÑ Ò ÖØ Û Ö ÈÖÓ Ö ÑÑ ØÖÓØÞ Ñ Ð ÓÖÖ Ø Ò Ò Ô ÖØ ÐÐ ÃÓÖÖ Ø Øµ ØÙÒ Ó Ò Ø ÓÒ Ö ÃÓÖÖ Ø Ø Ú ÖÐ Ò Ø ÒÙÖ Û Ø Ñ Ò Ù ÒÓ Ò ÐÐ ÈÖÓ Ö ÑÑØ Ð ÑÑ Ö ÞĐÙ Ð Ò Ö Ù ÖÙÒ Ò ÓÖÖ Øº Ø ÖÑ Ò Ö Ò Ø Ñ Ò ØÓØ Ð ÃÓÖÖ Ø Ø Þ Øµº ÑĐÙ Ò Ð Ó ÒÙÖ Ø ÖÑ Ò Ö Ò Ë Ð Ò ÐĐ Ù Ò ÐÝ Ö Òº Ï Ö ĐÓÒÒ Ò Û Ö Ò ÁÒ Ù Ø ÓÒ ĐÙ Ö ÒÞ Ð n Ö Ö Ù ĐÙ ÖÙÒ Ò Ë Ð ÒÖÙÑÔ S ĐÙ Ö Òº c B. Möller ß ½½ ß Diskrete Strukt. WS 09/10 c B. Möller ß ½¾ ß Diskrete Strukt. WS 09/10

ÒÑ Ð ÙÖ Ð Ù Òº Ñ Ò Ø Ò I ÁÒÚ Ö ÒØ Ø ÐØ Ò Ñ ÙÖ Ð Ù Û Öº ÁÒÚ Ö ÒØ Ö Ë Ð Øº A ÒØ ÙÛ ÙÒ ÓÐ s = 0; i = 0; ØÞØ V ÙÒ Ð Ï Ö Þ Ò ÐØ I ÚÓÖ Ñ Ò Ò Ö Ë Ð ÙÒ Ø ÖÑ Ò ÖØ Ò n ÙÖ ÐĐ Ù Ò ÊÙÑÔ S Ó ÐØ Ò Ð Ò Induktionsschritt ĐÙÖ n > 0 ÁÒ Ñ ÐÐ Û Ö Ö ÊÙÑÔ S Ù ÖÙÒ I Bº Induktionsanfang n = 0 Ë Ð Ò 0 ÙÖ ÐĐ Ù Ò ÙÖ Ò ÊÙÑÔ S Ø ÖÑ Ò ÖØ Û Ö Ö Ò Ø Ö Ø ØÖ Ø Ò Ò Ð Ò Ò Ò ÒÓ n 1 ÙÖ ÐĐ Ù Ø ØØ ÙÒ Ò ÁÒ¹ º º ÐØ Ð ÞÙ Ò Ò Bº Ù Ø ÓÒ ÒÒ Ñ ÐØ Ò Ð Ò I Bº Ò ÒÒ Ñ I ÚÓÖ Ë Ð Ò ÒÒ ÐØ Ò Û Ö Ð Ó Ò ÑØ I B Ò 0 Ë Ð Ò ÙÖ ÐĐ Ù Òº c B. Möller ß ½ ß Diskrete Strukt. WS 09/10 c B. Möller ß ½ ß Diskrete Strukt. WS 09/10 Beispiel 1.0.6 ÙÒ Ö Ñ ËÙÑÑ Ø ÓÒ Ô Ð ÛĐ Ð Ò Û Ö Ð V Ù ÖÙÒ ÁÒ I i <= M s == ÚÓÒ Ö Û Ö Ù ÓÒ Û Ò tsum(f,i) ÆÙÒ ĐÓÒÒ Ò Û Ö Ò Û Ú ÖÚÓÐÐ ØĐ Ò Òº Ï Ò Ö ÞÛ Ø Ò ÎÓÖ Ù ØÞÙÒ ÐØ Ò A ÁÒÚ Ö ÒØ I Ñ Ø I Ò ÃÖ Øº Ë Ð Ò Ò ÙÒ B Ø i < Mº Ö Ö ØØ Ò ÎÓÖ Ù ØÞÙÒ ÓÐ Ø ÒÙÒ ÒÒ Ù Ù N Ðغ Æ Ò ÙÒ Ù ÖÙÒ ÚÓÒ Ë ØÞ ½º¼º ÐØ Ò Ë Ð Ò Ò Û Ò B i >= M Ù i <= M s == tsum(f,i) i >= M Ð Ó Û Ò Þ Ø Ò Ë Ð Ò Ò I Bº À Ö Ù ÓÐ Ø i == M s == tsum(f,i) ÙÒ Ö Ù s == tsum(f,m) º º s ÒØ Đ ÐØ ÈÖÓ Ö ÑÑ Ò Ø Ø Đ Ð ËÙÑÑ ÐÐ Ö ÒØ Ö Ö Ò Ò ÙÒ Ø ÓÒ Û ÖØ º c B. Möller ß ½ ß Diskrete Strukt. WS 09/10 c B. Möller ß ½ ß Diskrete Strukt. WS 09/10

2 Intervallschachtelungen 2.1 Der natürlichzahlige Quotient ÆÙÒ ÛÓÐÐ Ò Û Ö Ñ ØØ Ð Ö ÁÒÚ Ö ÒØ ÒØ Ò ÈÖÓ Ö ÑÑ Ó ÒØÛ ÐÒ Ô Ö ÃÓÒ ØÖÙ Ø ÓÒ ÓÖÖ Ø Ò º Ï Ö ÛÓÐÐ Ò Ð Ö Ø ÙÒ Ø ÓÒ iquot : ÁÆ (ÁÆ \ {0) ÁÆ ÞÙ Ò ÐÒ Û Ö Ò Ê ÚÓÒ Đ ÒÐ ÙØ Ò Ù Ò ĐÙÖ Ò Ò ØĐÙÖÐ Þ Ð Ò ÉÙÓØ ÒØ Ò Ö Ò Òº ĐÙÖ Ò ØĐÙÖÐ Ð Ò k m n Ñ Ø m 0 Ô Þ Þ Ö Ò Û Ö iquot Ò Ò Ò ÄĐÓ ÙÒ ÙÖ Ò ÑÑ Ö Ò Ö Û Ö Ò ÁÒØ ÖÚ Ðй Ø ÐÙÒ Ö ÐØ Ò Û Ö º ÙÖ k = iquot(n, m) k m n (k + 1) m > n Ï Ö Ò Ð ËÔ Þ Ø ÓÒ Û Ð ÛĐÙÒ Ø Æ Ò¹ ÙÒ Ò ÙÒ ÓÒ ØÖÙ Ö Ò ÒÒ ÙÒØ Ö Î ÖÛ Ò ÙÒ ÚÓÒ Ë ØÞ ½º¼º Ñ Ø Ø iquot(n, m) Ò ØĐÙÖÐ Ð Ù Ñ Ö ÐÐÛ Ö¹ Ò Ë Ð Ö Ø ÐÐغ Ù Ö Ñ ÛÓÐÐ Ò Û Ö Ò Û Ö ÐØ Ò Ò Ö Ø Ò Ø Ò ÉÙÓØ ÒØ Ò n/m ÙÖ Ò Ò Ö Æ ÓÑÑ Ø Ð¹ Ð Ò ÒØ Ø Øº ÊÓ ÐĐÓ ÙÒ Ò ÙÖ Û Ø Ö Î ÖÛ Ò ÙÒ ÚÓÒ ÁÒÚ Ö ÒØ Ò Ñ Ø¹ Ø Ð Ö Ó Ò ÒÒØ Ò ÓÖØ ÐØÙÒ Ø Ò ÆÞ ÒØ Ö Ñ Ø c B. Möller ß ½ ß Diskrete Strukt. WS 09/10 c B. Möller ß ½ ß Diskrete Strukt. WS 09/10 Û Ö Ò ĐÓÒÒ Òº Ò ÖÓ Đ ØÞÙÒ ĐÙÖ Ò Ò ÒØ ÖÚ ÐÐ Ö ÞÙ Ò Ò¹ Ò ÑĐÓ Ð ËØÖ Ø ĐÙÖ ÄĐÓ ÙÒ Ø Ò ÁÒØ ÖÚ ÐÐ Ø ÐÙÒ Ö Ø Ó Î Ö Ö ÙÒØ Ö Ë Ö Ò 0 Ò Ò ÙÒ ÁÒØ ÖÚ ÐÐ Ù ¹ 0 k k ÁƵ Ö Ð Ò Ò Ë Ø µº ¹ k n m 1µ Ë Ö Ò Ò Ò Ó Ö Ö n = 0 k = 0 m = 1 k = n Î Ö ÐÐ Ñ Ò ÖÙÒ ÒÒØ iquot(m, n) [u, n] Ò Ò u = 0 Á Ö ĐÓ u ÙÑ 1 Û ÒÒ ÑĐÓ Ð º Ð Ó ÒÒ Ð ËØ ÖØ ÒØ ÖÚ ÐÐ [0, n] Ò Òº c B. Möller ß ½ ß Diskrete Strukt. WS 09/10 c B. Möller ß ¾¼ ß Diskrete Strukt. WS 09/10

Ë Ð Ò ÙÖ Ð Ù ÞÙÑ ÒĐ Ø Ò ÓÖغ Ò Ñ ÒØ ÓÐ Ò Æ ÒÖ ÒÙÒ À ÖÞÙ Ø Ö Ò Ñ Ë Ð Ò ÙÖ Ð Ù h ÙÑ m 0 Ö ĐÓ Ø Û Ö Ú Ö¹ Î Ö ÖÙÒ ÈÖÓ Ö ÑÑ u = 0; //u*m <= n while ((u+1)*m <= n) { u = u + 1; //u*m <= n //u*m <= n und (u+1)*m > n //u == iquot(n,m) Ö ÒÙÒ ÚÓÒ (u + 1) m ÅÙÐØ ÔÐ Ø ÓÒ Ò Ò Î ÖÑ Ù Û Ò µº ÞÙ Ò Ï ÖØ Ù ÖÙ (u+1) m Ò Ò Ö À Ð Ú Ö ¹ ĐÙ Ö h Ñ Ø Ö Ù ÑÑ Ò Ò Ñ Ø u Û Ö ĐÙ Ö Ò ÁÒÚ Ö ÒØ Ð Ò Ö Ø ÐÐص ÐØ ÙÖ Û Ò Ö Ù Û Ò ÇÔ Ö Ø ÓÒ Ò ÚÓÒ ÙÒ ((u + 1) + 1) m = (u + 1) m + m = h + m c B. Möller ß ¾½ ß Diskrete Strukt. WS 09/10 c B. Möller ß ¾¾ ß Diskrete Strukt. WS 09/10 Ö Ø u = 0; h = m; //u*m <= n und h = (u+1)*m (I) while (h <= n) { u = u + 1; h = h + m; // (I) //u*m <= n und (u+1)*m > n //u == iquot(n,m) Ö Ò Ù Ò Đ ÕÙ Ú Ð ÒØ Ò ÙÒ ÈÖÓ Ö ÑÑ ÒÒ Ñ Ò Å Ø Ö ÕÙ Ñ ĐÙ Ö Ì ÖÑ Ò ÖÙÒ Ö Ë Ð Ö ÙÑ Ò¹ Ù «Ö ÒÞ n h ÙÑ mº Ö Ò ÖØ Ò Ö Ö Ø Û Ò Ö ÁÒÚ Ö ÒØ Ò h n Ò ØÒ Ø Ú Ð Ø ÑÙ Ë Ð ÞÙÑ Ò ÓÑÑ Òº ÆÙÒ Û Ö Ò ÅÙÐØ ÔÐ Ø ÓÒ Ñ Ö Ù ĐÙ ÖØ Ø ØØ Ò Ò ÒÙÖ ÒÓ ÐÐ Ø ÓÒ Ò ÒĐÓØ º Î Ð ÆÞ ÒØ Ð ÓÖ Ø Ñ Ò Ö ÓÑÔÙØ Ö Ö Ô ÖÙ Ò Ù c B. Möller ß ¾ ß Diskrete Strukt. WS 09/10 c B. Möller ß ¾ ß Diskrete Strukt. WS 09/10 Ö ÓÖØ ÐØÙÒ Ø Ò º

2.2 Die natürlichzahlige Quadratwurzel Ð ÆĐ Ø Ò ÐÒ Û Ö Ò ØĐÙÖÐ Þ Ð ÉÙ Ö ØÛÙÖÞ Ð¹ ÙÒ Ø ÓÒ isqrt : ÁÆ Áƺ ËÔ Þ Ø ÓÒ Ð ÙØ Ø ÒÞ Đ ÒÐ Û Ñ ÉÙÓØ ÒØ Ò ĐÙÖ Ð Ò k n Ò ØĐÙÖÐ k = isqrt(n) k 2 n (k + 1) 2 > n Ò ÐÓ Ð ÓÖ Ø ÑÙ Ð ÙØ Ø Ó Ö u = 0; //u^2 <= n while ((u+1)*(u+1) <= n) { u = u + 1; // u^2 <= n //u^2 <= n und (u+1)*(u+1) > n //u == isqrt(n) Ï Ö ĐÓÒÒ Ò Û ÞÙÚÓÖ Đ ØÞ Ò 0 k k nº ÙÒØ Ö Ë Ö Ò Ø Ö ĐÙÖ n = 0µ Ó Ö Ò Øº ÎÓÒ Ö ÆÞ ÒÞ Ö ØĐÓÖØ ÙÒ Ñ ÉÙ Ö Ö Ò Ø Ò ÅÙÐØ ÔÐ Ø ÓÒº c B. Möller ß ¾ ß Diskrete Strukt. WS 09/10 c B. Möller ß ¾ ß Diskrete Strukt. WS 09/10 Ï Ö ÐØ Ò Ò ÐÓ ÞÙ ÚÓÖ Ö ÓÖØ Ò Ñ Û Ö Ò Ï ÖØ Ù ¹ ÖÙ (u + 1) 2 Ò Ò Ö À Ð Ú Ö Ð Ò h Ñ Ø ĐÙ Ö Òº Ð Æ ÒÖ ÒÙÒ Ø Ñ Ò Ö ((u + 1) + 1) 2 = (u + 1) 2 + 2 (u + 1) + 1 = h + 2 (u + 1) + 1 ÛÓ Ö Ï ÖØ u + 1 Ò Ö ÙÛ ÙÒ Ò u Ö Ø Ò u Ò Øº Ö Ø u = 0; h = 1; //u^2 <= n und h = (u+1)^2 while (h <= n) { u = u +1; h = h + 2*u + 1; //u^2 <= n und h = (u+1)^2 //u^2 <= n und (u+1)*(u+1) > n //u == isqrt(n) ĐÙÖ Ì ÖÑ Ò ÖÙÒ ØÖ Ø Ø Ñ Ò Û ÞÙÚÓÖ «Ö ÒÞ n hº c B. Möller ß ¾ ß Diskrete Strukt. WS 09/10 c B. Möller ß ¾ ß Diskrete Strukt. WS 09/10

Ñ Ø 2 ÐĐ Ø Ò ÒĐ Ö Ö Ø ÐÐÙÒ ÙÖ Ò Ò Ä Ò Ú Ö¹ ÙÒ Ñ Ø Æ Þ Ò Ò Ö 0 Ö Ð Ö Ò Ò ÐÓ ÞÙÖ ÅÙÐØ ¹ ÔÐ Ø ÓÒ Ñ Ø 10 Ñ Þ Ñ Ð Ý Ø Ñµº Ï Ö ÛÓÐÐ Ò Ö Ò Ò Ë Ö ØØ Û Ø Ö Ò ÙÒ Ò Ï ÖØ Ù ÖÙ 2 u + 1 Ò Ò Ö Û Ø Ö Ò À Ð Ú Ö Ð Ò Ñ Ø ĐÙ Ö Òº À Ö Ø ÐÐ Ö Ò ØÛ ÎÓÖ Ø ÓØ Ò Ö Ù ÖÙ Ø Ø Ò Ò Ö ËØ ÐÐ Ò Ö u Ö Ø ÙÑ 1 Ö ĐÓ Ø Ø Ö ÙØ Ø ÓÖØ Ð Ó ÒØÐ 2 (u 0 +1)+1 = 2 u 0 +3 Û ÒÒ u 0 Ö ÐØ Ï ÖØ ÚÓÒ u غ Ö ÐØ Ò Ó Ï Ö u = 0; h = 1; g = 3; //u^2 <= n und h = (n+1)^2 und g = 2*u + 3 (I) while (h <= n) { u = u + 1; h = h + g; g = g + 2; // (I) //u^2 <= n und (u+1)*(u+1) > n //u == isqrt(n) À ÖÑ Ø ĐÓÒÒØ Ñ Ò ÞÙ Ö Ò Ò ÒÒ Ò ÅÙÐØ ÔÐ Ø ÓÒ ÑÙ Ò Ö ÞÙ ĐÓÖ Ò ÁÒÚ Ö ÒØ Ò ÖĐÙ Ø Ø Û Ö Òº c B. Möller ß ¾ ß Diskrete Strukt. WS 09/10 c B. Möller ß ¼ ß Diskrete Strukt. WS 09/10 Å Ò Ø h ÓÐ Ö ÉÙ Ö ØÞ Ð Ò ÙÖ ÐĐ Ù Ø g Ð Ô Ð Ò Û Ö ÓÐ Ò Ö Ï ÖØ Ö Ø Ð Ø Ò ÓÐ Ö ÙÒ Ö Ò Ð Ò 3º Ö Ê ÒÙÒ ĐÙÖ n = 20 Òº Î Ö Ð Ò u h g 0 1 3 1 4 5 2 9 7 3 16 9 4 25 11 À Ö Û Ö Ð Ó ÙÒØ Ö Ö À Ò Ñ Ø Û Ò ÔÓ Ø Ú ÉÙ Ö ØÞ Ð ËÙÑÑ Ù Ò Ò Ö ÓÐ Ò Ö ÙÒ Ö Ö Ð Ò Ø Û ÙÖ ÓÐ Ò Ð Ú Ö Ò ÙÐ Ø Û Ö Ë Ð Ò Ø Ñ Ø u = 4 = isqrt(20)º c B. Möller ß ½ ß Diskrete Strukt. WS 09/10 c B. Möller ß ¾ ß Diskrete Strukt. WS 09/10

2.3 Einschub: Logarithmen ÁÑ ÓÐ Ò Ò Ò ØØ ÛÓÐÐ Ò Û Ö Ò ÈÖÓ Ö ÑÑ ÞÙÖ Ö ¹ ÒÙÒ ÚÓÒ ÄÓ Ö Ø Ñ Ò ÒØÛ ÐÒº ÓÖØ ÐØÙÒ Ø Ò Û Ö Ò Ö Å Ø Ñ Ø Ý Ø Ñ Ø ÞÙ Û Ö ÓÐ Ò Û Ö Ö ÙÖÞ Ò Ø ÓÒ ÙÒ Û Ø ¹ ÙÒØ Ö Ñ Ì Ñ «ÒÖ ÒÞ ÒÖ ÒÙÒ ÞÛº ÐÙÐÙ Ó Ø Ò Ê ÒÖ ÐÒ ÚÓÒ ÄÓ Ö Ø Ñ Òº «Ö Ò Ò ÐØ ĐÙÖ Ò Ø Ð Ö ÄÓ Ö Ø ÑÙ ÐÓ b y Ò Ö ÔÓ Ø Ú Ò Ö ÐÐ Ò Ð y ÞÙ Ò Ö http://mathworld.wolfram.com/finitedifference.htmlº Ö ÐÐ Ò b > 1 Ø Ò ÈÓØ ÒÞ x ÞÙ Ö Ñ Ò b Ö Ò ÖÐ Û Ò Ø Ì Ò Ò Ò Ö «Ö Ò Ò Ò ÙÑ y ÞÙ Ö ÐØ Ò ÑÙ x ÐÓ = b y y = b x Ò http://en.wikipedia.org/wiki/difference engineº ÄÓ Ö Ø ÑÙ ÙÒ ÈÓØ ÒÞ Ò Ð Ó ÍÑ Ö ÙÒ Ø ÓÒ Ò ÚÓÒ Ò Ò Öº Beispiel 2.3.1 ÐÓ 2 1024 = ÐÓ 2 2 10 = 10º c B. Möller ß ß Diskrete Strukt. WS 09/10 c B. Möller ß ß Diskrete Strukt. WS 09/10 Ö Ø Ò Ö Ò Ø Ò ÓÐ Ò Ö Ø Ù Ó Ö Ò Ø ÓÒº ĐÙÖ Ú ÖØ ÒÒ Ñ Ò ÙÒØ Ö Î ÖÛ Ò ÙÒ Ö Ö Ø Ò Ò Ó Ö Ò Ò Û Ø Ø Ò Ê ÒÖ ÐÒ Ò ÐÓ b b x = x b b y = y ÐÓ b 1 = 0 ÐÓ b (y z) = ÐÓ b (b ÐÓ b y b ÐÓ b z ) = ÐÓ b b ÐÓ b y + ÐÓ b z = ÐÓ b y + ÐÓ b z ĐÙÒ Ø Ò Ø Ö Ø Đ ÒÐ º ÐÓ b (y z) = ÐÓ b y + ÐÓ b z ĐÙÖ Ð ØÞØ Ö Đ ÐØ Ñ Ò Ö Ù ÐÓ b (y z ) = z ÐÓ b y ÐÓ a y = ÐÓ a b ÐÓ b y ÐÓ a y = ÐÓ a b ÐÓ b y = ÐÓ b y ÐÓ a b Æ Ò Ö ÅĐÓ Ð Ø ÞÙÑ ÍÑÖ Ò Ò ÚÓÒ ÄÓ Ö Ø Ñ Ò ÚÓÒ Ò Ö Ò Ò Ö ÙØ Ø Ù ÄÓ Ö Ø Ñ Ò ÞÙ Ú Ö Ò Ò Ò ÞÙ Ò Ò Ö ÔÖÓÔÓÖØ ÓÒ Ð Ò ÙÒ Ö c B. Möller ß ß Diskrete Strukt. WS 09/10 c B. Möller ß ß Diskrete Strukt. WS 09/10 Ñ Ø Û Ò Ñ y Ò ØÛ Ð Ò ÐÐ Û Òº

2.4 Der natürlichzahlige Logarithmus Ï Ö Ò ÐÒ ÒÙÒ ÙÒ Ø ÓÒ ilog : ÁÆ \ {0 ÁÆ ĐÙÖ Ò ÄÓ Ö Ø Ñ Ï ØÙÑ Ø Ò Ö ÁÒ ÓÖÑ Ø Đ Ù ÚÓÒ ÁÒ¹ Ò ØĐÙÖÐ Þ Ð Ò ÄÓ Ö Ø ÑÙ º Ø Ö Ò Ô Ð Û Ö Ò Û Ö Ò ÔĐ Ø Ö Ò Ò ØØ Ò Òº Ú ÖÛ Ò Ø Ò ÄÓ Ö Ø ÑÙ ĐÙÖ Ï ØÙÑ ËÔ Þ Ø ÓÒ Ð ÙØ Ø ÒÞ Đ ÒÐ Û Ö ÉÙ Ö ØÛÙÖÞ Ð Û Ò Ø Ò Ø Û ÒØÐ Ø ÖÛĐ ÒØ Ñ Ò Ñ Ø Ö Ò ØĐÙÖÐ Ð Ò k n ĐÙÖ k = ilog(n) 2 k n 2 k+1 > n Ò Øº Ø ÒÙÖ ÑĐÓ Ð ĐÙÖ n > 0º c B. Möller ß ß Diskrete Strukt. WS 09/10 c B. Möller ß ß Diskrete Strukt. WS 09/10 À Ö ØĐÓÖØ Ò ØĐÙÖÐ ÒÓ Ú Ð Ù Û Ò Ö ÇÔ Ö Ø ÓÒ Ö ÈÓØ ÒÞ ÖÙÒ º Ò ÐÓ Ð ÓÖ Ø ÑÙ Ð ÙØ Ø Ó Ö u = 0; //2^u <= n while (2^(u+1) <= n) { u = u + 1; //2^u <= n //2^u <= n und 2^(u+1) > n //u == ilog(n) Ö ÒÙÒ Ö Ø ÒÒØ Ò ÓÖØ ÐØÙÒ Ø Ò Ö Đ ÐØ Ñ Ò Å Ø u = 0; h = 2; //2^u <= n und h = 2^(u+1) while (h <= n) { u = u + 1; h = 2 * h; // oder h = h+h; //2^u <= n und h = 2^(u+1) //2^u <= n und 2^(u+1) > n //u == ilog(n) c B. Möller ß ß Diskrete Strukt. WS 09/10 c B. Möller ß ¼ ß Diskrete Strukt. WS 09/10

2.5 Schnelle Potenzierung ÈÖÓ Ö ÑÑ Ú ÖÛ Ò Ø Û Ö Ò ÙÑÙÐ ØÓÖÚ Ö Ð y ÓÛ ÞÛ Î Ö Ð Ò z ÙÒ k Û Ð ÞÙÖ ÈÓØ ÒÞ ÞÙ Ö ¹ Ò Ð ÞÛº Ò ÞÙ ĐÓÖ Ò ÜÔÓÒ ÒØ Ò ÒØ ÐØ Òº Ð Ò ØĐÙ ÞÙÑ ÚÓÖ Ò Ð ÓÖ Ø ÑÙ ÛÓÐÐ Ò Û Ö ÒÓ Ò Î Ö Ö Ò ÞÙÖ Ö ÒÙÒ ÚÓÒ x n Ñ Ø ÒÙÖ ØÛ ÐÓ 2 n Ø ØØ n 1 (I) y z k = x n ÖĐÓ Ò Û Ö Ò Ú Ö ÒĐÙÔ Ø ÙÖ ÁÒÚ Ö ÒØ ÅÙÐØ ÔÐ Ø ÓÒ Ò ÒØÛ ÐÒº Þ ÒØÖ Ð Á Ø ÓÐ Ò ÒÒ Ò ÃÖ Ø ØÞØ Û Ö Ò ÙÖ ÙÛ ÙÒ Ò Ë y = 1; z = x; k = n; Á Ø n Ö ØÛ n = 2 m Ó ÐØ x n = x 2 m = (x 2 ) m º º º ÙÖ Ò ÒÞ ÉÙ Ö ÖÙÒ ÚÓÒ x ÒÒ Ñ Ò ÀĐ Ð Ø ÆÙÒ Û Ö Ò Û Ö Ú Ö Ù Ò k Ö ØØÛ ÞÙ ÖÒ Ö Ò ÙÒØ Ö Ö ÅÙÐØ ÔÐ Ø ÓÒ Ò Ò Ô Ö Òº Ù Ö Ø Ö ÐØÙÒ ÚÓÒ (I) Û Ö Ð Ð k = 0 Ó ÑÙ y Ù Ø Ö Ò x n ÐĐ Ø Ò ØĐÙÖÐ Ø Ö Ö Òº ÒØ ÐØ Òº c B. Möller ß ½ ß Diskrete Strukt. WS 09/10 c B. Möller ß ¾ ß Diskrete Strukt. WS 09/10 Fall 2: k Ø ÙÒ Ö ØÛ k = 2 m + 1º Ë ÒÙÒ k > 0º Fall 1: k Ø Ö ØÛ k = 2 mº ÐØ Đ ÒÐ ÞÙ Ó Ö ĐÍ ÖÐ ÙÒ ÒÒ y z k = y z 2 m = y (z 2 ) m Ø Ñ Ò ÒÒ y z k = y z 2 m+1 = y z z 2 m = y z z k 1 (I) Û Ö ÙÖ ÙÛ ÙÒ Ò ÙÒ z = z z; k = iquot(k,2); (I) Û Ö ÙÖ ÙÛ ÙÒ Ò ÙÒ y = y z; k = k 1; Ù Ö Ø Ö ÐØ Òº Ù Ö Ø Ö ÐØ Òº c B. Möller ß ß Diskrete Strukt. WS 09/10

Ñ Ò ØØ Ú Ö ÖÒ Û Ö Ò Ò Ú ËÙ Ú Ö Ö Ò Ñ Ø ÁÒ ÞÙ M Ë Ö ØØ Ò ĐÙÖ Ò Ð Ö ÄĐ Ò Mµ Ñ ÐÐ ÓÖØ ÖØ Ö x ØÖ ØØ ÓÖØ Ò Ø Ù º ÙÒ Ò Û Ö ÞÙ Ö Ø Ò Ó x Ñ Ø a[i] ĐÙ Ö Ò Ø ÑÑØ Ò ÖÒ ÐÐ Ø Ò ØĐÙÖÐ Ñ Ø FALSE ÞÙ Ò Ø Ð Ö Òº ØÞ Ò Û Ö ÓÐ Ò Å ÖÓ Ò Ø ÓÒ Ò ÚÓÖ Ù Ö Ø ÓÐ Ò Ò ÑØ Ð ÓÖ Ø ÑÙ y = 1; z = x; k = n; // (I) while (k > 0) { if (even(k)) { z = z*z; k = iquot(k,2); else { y = y*z; k = k-1; // (I) //(I) und k==0 //y == x^n Ï Ö ØÖ Ø Ò Ö ÒÙÒ ÚÓÒ Ø Ð Ó Ö Ò 2187º Beispiel 2.5.1 3 7 y z k 1 3 7 3 3 6 3 9 3 27 9 2 27 81 1 2187 81 0 3 Suche in sortierten Feldern 3.1 Der eindimensionale Fall Ï Ö ÓÖÑÙÐ Ö Ò ÒÙÒ Ò ÈÖÓ Ö ÑÑ ÔÖĐÙ Ø Ó Ò Ð Ñ ÒØ x Ò Ò Ñ Ì Ð Ð a [i,j] Ù ØÖ Øغ Á Ø ÁÒØ ÖÚ ÐÐ [i, j] Ð Ö º º Ø j < iµ Ó Ù Ì Ð Ð Ð ÞÙ Ò Ñ Û ÒØÐ Ò ÐÐ Ö Ò Ñ Ø ØÛ ÐÓ M Ë Ö ØØ Òº Ò Û Ö Ò Ð int a [M]º Û ÒÒ Ø x ÙÒ Ò Ò ÖÒ ÐÐ Ö Ò Û Ö Ñ Ø Ñ ÞÙÑ ÆÓØ Ø ÓÒ ĐÙÖ Ò ÁÒØ ÖÚ ÐÐ [i, j] [0, M 1] Þ Ò Ò Û Ö Ñ Ø a [i,j] Ì Ð Ð ÞÛ Ò Ò ÁÒ Þ i ÙÒ jº Ê Ø ÒØ ÖÚ ÐÐ [i + 1, j] ĐÓÖ Ò Ì Ð Ð ÓÖغ ÁÒ Ò Ö Î Ö Ð Ò found Ú ÖÑ Ö Ò Û Ö Ó x ÙÒ Ò ÛÙÖ ØÙÒ Ø Ò ÖÞÙ Đ ÕÙ Ú Ð ÒØ ÃÓÒ ØÖÙ Ø Ò Ö ÈÖÓ¹ Ö ÑÑ Ö ÔÖ Cº Á Ø i = j Ó Ø Ø a [i,j] ÒÙÖ Ù a[i] Ø j < i Ó Ø a [i,j] Ð Öº Beispiel 3.1.1 Á Ø M = 10 ÙÒ a = {2, 4, 6, 7, 5, 0, 1, 3, 9, 8 Ó #define FALSE = 0 #define TRUE = 1 ÛĐ Ö a [2,6] = {6, 7, 5, 0, 1º

ÒØ Đ ÐØ Ò Ò Ò Ø Ò Ö ØÞÛ ÖØ Þº º Ò Ò Ï ÖØ Ù Ö Ð ÞÛº ÈÖÓ Ö ÑÑ Ø Ò ØĐÙÖÐ Ö Ò ÆÞ ÒØ Û Ð Ù ÒÒ ÑØ Ê Ø Ð ÙÒØ Ö Ù Ø Û ÒÒ x Ö Ø ÙÒ Ò ÛÙÖ º Ð ÙØ Ø ÙÒ Ö ÈÖÓ Ö ÑÑ Ó Ñ Ø found = FALSE; while (i <= j) { if (a[i] == x) found = TRUE; i = i + 1; return found; ÐĐ Ø Ò Ò Ñ Ñ Ò found Ò Ñ Ø Ò Þ Ø Ë Ð Ò Ò ÙÒ found = FALSE; while (i <= j &&!found) { if (a[i] == x) found = TRUE; i = i + 1; return found; c B. Möller ß ¼ ß Diskrete Strukt. WS 09/10 ÒÒ Ø pos Ñ Ø Ñ Ö ØÞÛ ÖØ ÞÙ Ò Ø Ð Ö Ò ÓÐ Ò Ò ÓÒ ÖÒ Ù ÛÓº ÒÒ Ú ÖÛ Ò Ø Ñ Ò Ø ØØ Ö Î Ö Ð Ò found Ö Ò Î ¹ Ö Ð pos Ñ Ò Ò Ð Ò Ø Ò ÁÒ Ü k Ñ Ø a[k] = x Ñ Ü Ñ Ð Ú Ö ĐÙ Ö Ò ÁÒ Ü ÒØ ÖÚ ÐÐ [0, M 1] Ð Ó Þº º 1 Ó Ö Mº Ï Ö ÛĐ Ð Ò Ö Mº Đ ÐØ ÛÙÖ x ÒÓ Ò Ø Ñ ØÖ Ø Ø Ò Ì Ð Ð ÙÒ Ò Ï ÖØ pos = M; while (i <= j && pos==m) { if (a[i] == x) pos = i; i = i + 1; return pos; Ç Ø ÑĐÓ Ø Ñ Ò ÐÐ Ö Ò Ò Ø ÒÙÖ Û Ò Ó x ÙÒ Ò ÛÙÖ¹ c B. Möller ß ½ ß Diskrete Strukt. WS 09/10 c B. Möller ß ¾ ß Diskrete Strukt. WS 09/10

ÒĐ Ø Ò Ë Ö Øغ Ñ ÐØ Ö k = ÐÓ ÆÙÒ 2 º º Ò Ñ ÐÐ Ò Û Ö ÔĐ Ø Ø Ò M Ö ÙÞ Öغ ÀĐ Ð Ø Ø Î Ö Ö Ò Ù ÒĐ Ö ËÙ º Û Ò M 2 k+1 Mº > Ò ØØ ¾º Ò Û Ö Ð Ó k = ilog(m)º Æ Å Ò ÐĐ Ø Ä Ü ÓÒ Ò Ö Å ØØ Ù º Ù Ú Ö ÖØ Ò Î Ö Ö Ò ÒĐÓØ Ò Ñ Ð Ø Ø Ò ËØ Ø Ù Ø ÏÓÖØ Ù Ö Ë Ø Ø Ñ Ò ÖØ º ÐÐ ÒĐ ÑÐ ÒÒ Û ÒÒ x Ð Ð ØÞØ Ð Ñ ÒØ Ó Ö Ö Ò Ø Ò a Ù ØÖ ØØ M Ë Ö ØØ º ËØ Ø ÐÔ Ø Û Ø Ö ÚÓÖÒ Ð Ö Ø ÏÓÖØ Ù Ö Ë Ø Ù Ø Ñ Ò Ò Ñ Ð Ò Î Ö Ö Ò Ò Ö ÚÓÖ Ö Ò ÀĐ Ð Ø Û Ø Ö ÙØ Ò Ø ÒÑ Ò Ò ÒÒ Ö M ÙÖ Ù Ñ Å ÐÐ ÓÒ Ò¹ Ö Ó Ö ÒÓ ĐÓ Ö Ð Òº Ø Ø ÐÔ Ø Û Ø Ö ÒØ Ò Ð Ð ØÞØ ÏÓÖØ Ù Ö Ë Ø Ù Ø Ñ Ò Ò Ö ÒØ Ö Ò ÀĐ Ð Ø Û Ø Öº ÁÑ Ò ØÞ ÒÒ Ø Î Ö Ö Ò ÓÒ Ö Û ÒÒ Đ Ù Ò Û Ò Ø Û Ö Ò Ø Ñ Ö ØÖ Öº ÞÙÑ ÚÓÖ Ò Î Ö Ö Ò ÛÓ ÒÙÖ Û Ð Ò ÒÞ ÁÒ ÜÔÓ Ø ÓÒ Ù ÐÓ Ò Û Ö Ò ÓÒÒØ Û ÒÒ Ù Ø Ð Ñ ÒØ Ò Ø Ò Û ÒØÐ Ú Ö ÖØ Î Ö Ö Ò Ö Ø Û ÒÒ Ñ Ò ÚÓÖ¹ Ù ØÞØ Ð ÓÖØ ÖØ Øº Ó ÓÖØ ÙÒ Ò ÛÙÖ Û Ö Ö Ö ËÙ Ö ÙÑ Û Ð ÙÑ ÒÒ ÒÒ Ñ Ò Ù Ò Û Ò Ò Ñ Ä Ü ÓÒº c B. Möller ß ß Diskrete Strukt. WS 09/10 ÐÐ Ñ Ò M ĐÓÒÒ Ò Û Ö ÞÛ Ò Ò ÖØ Ò Û ¹ Ò ÖÔÓØ ÒÞ Ò Ò Ð ÑÑ Ò º º Û Ö Ù Ò Ò k Ñ Ø 2 k ØÖ Ø Ò Û Ö Ò ËÔ Þ Ð ÐÐ Ò Ñ M Ò Û ÖÔÓØ ÒÞ Ø ØÛ M = 2 k º ÒÒ Ø Ñ Ò Ò Ñ Ö Ø Ò Ë Ö ØØ ÒÙÖ ÒÓ 2 k 1 Ð Ñ ÒØ ĐÙ Ö Ñ ÞÛ Ø Ò Ë Ö ØØ ÒÓ 2 k 2 Ù Ûº Ñ Ø Ò Ø ĐÙÖ Ð Ð Ñ ÒØÞ Ð M ÒĐ Ö ËÙ Ò Ð Ó Ø Ò ÔĐ Ø Ø Ò k Ë Ö ØØ Ò Ö Ö ØÐ ÞÙ ÙÖ Ù¹ Ò Ö Ò Ð Ñ ÒØ ÛÓÖ Ò ÙÒ Î Ö Ö Ò Ò Ø ÔĐ Ø Ø Ò ilog(m)+1 º º Ñ Ï ÒØÐ Ò Ò ÐÓ Ö Ø Ñ Ú Ð Ò Ë Ö ØØ Òº Ï ÒÒ Ñ Ò Ò Ø 2 20 = 1048576 Ø Û Ö Ö Ö Ñ Ø ¹ ÆÞ ÒÞ Û ÒÒ ÙØÐ Å Ò Ö Ù Ø ÒÙÖ ÒÓ 20 Ë Ö ØØ Ò ÐÓ 2 M Ë Ö ØØ Ò ÖØ Ø ØØ Ò ÔĐ Ø Ø Ò M Ö Ò Ú Ò ËÙ º Ø ØØ Ò Ö Å ÐÐ ÓÒº

ÌÖ Ò Û Ö ÒÙÒ ÒÞ Ð Ø Ò Ò º Definition 3.1.2 Ò Ò Ð a Ñ Ø M Ð Ñ ÒØ Ò ÞÛ Ò Ò Ò Ò Ð Ò Ö ÇÖ ÒÙÒ Ò ÖØ Øº ÒÒ Ø a Ò ØÛ Ð Ø Ö ÞÙ ÔÖĐÙ Ò ÓÖÑ Ö ËÓÖØ ÖØ Ø Ò ÙÒ Ð ÖØ Û ÒÒ ÓÖØ ÖØ i, j : i, j [0, M 1] i j a[i] a[j] Bemerkung ß M = 0 [0, M 1] = a ÓÖØ Öغ Lemma 3.1.3 a Ø ÓÖØ ÖØ Ò Ù ÒÒ Û ÒÒ i : i [0, M 2] : a[i] a[i + 1] Beweis: ( ) ÏĐ Ð j = i + 1 ÐÐ i < M 2 ( ) ÁÒ Ù Ø ÓÒ ĐÙ Ö j i ÙÒØ Ö Î ÖÛ Ò ÙÒ Ö ÌÖ Ò Ø Ú ØĐ Ø ÚÓÒ º ß a ÓÖØ ÖØ ÙÒ [i, j] [0, M 1] a [i,j] ÓÖØ Öغ Ï Ö Ö Ò ÒÙÒ ÒĐ Ö ËÙ Ò x Ò Ò Ñ Ì Ð Ð a [i,j] Ò Ù Ö ÏĐ ÐØ Ñ Ò Ø Ø k = i Ó Ö Ø Û Ö Ò Ú Î Ö Ö Òº Á Ø [i, j] = º º j < iµ Ó Ø x Ò Ø Ò a [i,j] º ÏĐ Ð Ð Ó k Ó ÑĐÓ Ð Ø Ð ÑĐ Ö ÓÖØ Ö ØØ ÖÞ ÐØ k = iquot(i+j,2); Ò ÖÒ ÐÐ ÛĐ Ð Ò Ò Ð Ò ÁÒ Ü k [i, j]º Û Ö ¹ x = a[k] ÙÒ Òº Å Ò ĐÙ ÖÐ Ø Ø k [i, j] Ðغ ¹ x < a[k] Ü ÒÒ Ò Ø Ö Ø ÚÓÒ a[k] Ð Ò ÖÒ Ö Ð Ó Ó Ö Ë Ö Ò Ù k 1 ÙÒ Ù Ò a [i,k 1] Û Ø Öº Ñ Ø ÒÒ Ð Û ÒØÐ ÁÒÚ Ö ÒØ ĐÙÖ ÙÒ Ö Î Ö Ö Ò ÓÐ Ò Ö ĐÓ Ð Ó ÙÒØ Ö Ë Ö Ò Ù k+1 ÙÒ Ù Ò a [k+1,j] Ù Ò Ò Ï ÒÒ x ĐÙ Ö ÙÔØ Ò a Ð Ø ÒÒ Ñ Ì Ð Ð a [i,j] º ¹ x > a[k] Ü ÒÒ Ò Ø Ð Ò ÚÓÒ a[k] Ð Ò Û Ø Öº c B. Möller ß ¼ ß Diskrete Strukt. WS 09/10

Öغ Ð Ø Ò Û Ö ÒĐ Ö Ò ËÙ Ò Ù Ô Ð¹ ÙÒĐ Ø 3.2 Suche in zweidimensionalen Feldern ÒØ ÔÖ Ò ÈÖÓ Ö ÑÑ Ð ÙØ Ø Ó Ò i = 0; j = M-1; pos = M; while (i <= j && pos == M) { k = iquot(i+j,2); if (a[k] == x) pos = k; else if (a[k] < x) return pos; else i = k + 1; j = k - 1; ÛÓÐÐ Ò ÚÓÒ Ò Ñ Ò ÓÒ Ð Ò Ð ÖÒ Ù ÞÛ Ñ Ò ÓÒ Ð Ï Ö ÒÙÒ Å ØÖ Þ Ò ĐÙ Ö Òº Û ØÛ ÓÐ Ò Å ØÖ Ü a[m][n] ÛÓÐÐ Ò Û Ö ÒÒ Ñ Ò Ò ÎÓÒ Ò Ö ÃÓÓÖ Ò Ø ÒÖ ØÙÒ Ò ÓÖØ ÖØ Ø º º Ð Ò ËÔ ÐØ Ù Ø Ò ÓÖØ ÖØ Øº ÙÒ Beispiel 3.2.1 2 2 3 5 3 4 5 6 a : 3 5 6 8 3 6 7 9 Æ ØĐÙÖÐ Ô Ð Ò ÅÙÐØ ÔÐ Ø ÓÒ Ø ÐÒº c B. Möller ß ½ ß Diskrete Strukt. WS 09/10 c B. Möller ß ¾ ß Diskrete Strukt. WS 09/10 ØÖ Ø Ò Û Ö Ò Ð Ð Ñ ÒØ y Ò a Ï Ö ÛÓÐÐ Ò ÒÙÒ Ò Ò Ð ÓÖ Ø ÑÙ ÒØÛ ÐÒ Ö ÚÓÒ Ò Ñ Ò Ò Ð Ñ ÒØ x Ø Ø ÐÐØ Ó Ò Ò Ñ ÓÐ Ò Ð a y ÚÓÖ ÓÑÑØ ÙÒ Ò Ò ÐÐ ÁÒ Þ i, j Ñ Ø a[i][j] = x Ð ¹ ÐØ x > y Ó ÒÒ Ö Ð Ò Ó Ö Ö Ò Ð Ð Ö À Ð Ô ÐØ ÙÒ ¹Þ Ð ÚÓÒ y Ù ÐÓ Ò Û Ö Òº ØÙÒ ËÙ Ö ÙÑ ÞÙ Ú Ö Ù Òº ÐØ x < y Ó ÒÒ Ö Ö Ø ÙÒØ Ö Ö Ò Ð Ð Ö À Ð Ô ÐØ ÙÒ ¹Þ Ð ÚÓÒ y Ù ÐÓ Ò Û Ö Òº ÎÓÒ Ò ĐÙ Ö Ò Ö Ò ÒÒ ÐÐ Ö Ò Ò Ö Ù ÐÓ Ò c B. Möller ß ß Diskrete Strukt. WS 09/10 Û Ö Ò Û Ó Ô Ð Þ Øº

Ñ Öº Ê Ø Î Ö Ö Ò ÛĐÙÖ Ð Ó Ò ÐÐ ÞÙ Þ ÑÐ ÁØ Ö Ø ÓÒ Ù ¹ Ð Òº Ú ÖÛ ÐØ Ò Ñ Ò ÐÐ Ö Ò y Ð Ð Ñ ÒØ Ò Ð Ó Ø ÏĐ ÐØ Ê Ø Ù Ö Û Ö Ò Ê Ø º Ö Ö ÙÒ Î Ö Ö Ò Ò ÞÛ Ñ Ò ÓÒ Ð ÁÒØ Ö¹ ÙÖ Ñ Ø Ø Ö Ö ØÐ ËÙ Ö Ö Ñ ÐÐ Ñ Ò Ò Ò ÆÙÒ ĐÓÒÒ Ò Û Ö ÙÒ Ö Î Ö Ö Ò ÔÖÓ Ö ÑÑ Ö Ò ÛÓ Û Ö Ö Ö Ù ÐÙ Ö Û Ð Ò ËÔ ÐØ Ó Ö Ð ÙÒ ÓÑ Ø Ú ÐÐ ÞĐÙ Ð Ö ÈÖÓ Ù ØÓÖ ÒÙÒ Ù Ò ÃÓÓÖ Ò Ø ÒÔ Ö Ò ÙØ Ò Ø Ò ÁÒØ ÖÚ ÐÐ [(i, j), (m, n)] Ø Ø Ù ÐÐ Ò È Ö Ò (k, l) Ñ Ø k [i, m] ÙÒ l [j, n] Ö Ö Ø Ò Ó Ö Ò ÒÒ Ò Ñ Ø h = 0; k = N-1; // Invariante: der Wahrheitswert der Aussage // "x liegt in a[(h,0),(m-1,k)]" while (x!= a[h][k] && h < M && k >= 0) if (a[h][k] < x) h = h+1; else k = k-1; // Falls k < 0 oder h == M: // x liegt nicht in a[(h,0),(m-1,k)] // sonst: x == a[h][k] Ö Ò Ø Ò Ê Ø Ù Ö Ò ĐÙ Ö Ò ÒÙÖ Û Ö ÆÞ ÒØ ÞÙ ĐÓÖ Ì Ð Ð a [(i,j),(m,n)] Ø ÒÒ Ò Ö Ø ÞÙ¹ ÑÑ Ò Đ Ò Ò Ì ÐÑ ØÖ Ü ÚÓÒ aº