Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

© Lammi-Niskala-Kossarev1 Algoritmiteoriaa Toiset tehtävät (ja sen ratkaisut) vaikeampia kuin toiset Toiset tehtävät (ja sen ratkaisut) vaikeampia kuin.

Samankaltaiset esitykset


Esitys aiheesta: "© Lammi-Niskala-Kossarev1 Algoritmiteoriaa Toiset tehtävät (ja sen ratkaisut) vaikeampia kuin toiset Toiset tehtävät (ja sen ratkaisut) vaikeampia kuin."— Esityksen transkriptio:

1 © Lammi-Niskala-Kossarev1 Algoritmiteoriaa Toiset tehtävät (ja sen ratkaisut) vaikeampia kuin toiset Toiset tehtävät (ja sen ratkaisut) vaikeampia kuin toiset Algoritmiteoria tarjoaa työkalut algoritmien analysointiin Algoritmiteoria tarjoaa työkalut algoritmien analysointiin –Tehtävän vaikeus –Monta eri algoritmiaa samaan ongelmaan Esim. Lajittelu: kupla-, valinta- Esim. Lajittelu: kupla-, valinta- –Eri algoritmien hyvyys

2 © Lammi-Niskala-Kossarev2 Algoritmiteoriaa Algoritmien yleiset ominaisuudet, joiden perusteella tehtävien vaikeutta ja algoritmien hyvyyttä voidaan arvioida ovat: laskettavuus – –onko ongelma ratkaistavissa tietokoneella kompleksisuus – –tehtävän koon ja tarvittavien resurssien suhde oikeellisuus – –kuinka oikean tuloksen algoritmi antaa

3 © Lammi-Niskala-Kossarev3 3.1.1 Laskettavuus Onko olemassa tehtäviä, joihin ei ole olemassa algoritmia ? Eli onko tehtäviä, joiden ratkaisemiseen ei voida laatia mekaanisesti suoritettavia ohjeita (ohjelmia) —> laskettavuus-käsite =computability

4 © Lammi-Niskala-Kossarev4 Laskettavuus tehtävä – –on laskettavissa (computable), jos voidaan kirjoittaa algoritmi sen ratkaisemiseksi – –ei ole laskettavissa (non-c), jos ei ole olemassa eikä koskaan tulla keksimään tehtävään algoritmia (tehtävä ei ratkea algoritmisesti).

5 © Lammi-Niskala-Kossarev5 Laskettavuus laskettavissa olevien tehtäviä on äärettömän vähän ei-laskettavissa olevien määrään verrattuna Useimmat tehtävät eivät ole laskettavissa! Alkuun luultiin, että kaikkiin tehtäviin on olemassa algoritmi, vaikkakaan kaikkien tehtävien osalta sellaista ei ollut vielä keksitty ratkeavuutta/-ttomuutta ei osattu pitää ongelman ominaisuutena

6 © Lammi-Niskala-Kossarev6 1930-luvulla kyettiin osoittamaan, että on olemassa ongelmia, joille ei ole olemassa algoritmia: K. Gödelin epätäydellisyyslause: (Incompleteness Theorem) 1931: siinä osoitettiin, että ns. Hilbertin ongelmaan ei ole algoritmista ratkaisua. Hilbertin ongelma: voidaanko mielivaltaisesta kokonaislukuja koskevasta väitteestä algoritmisesti selvittää pitääkö se paikkansa vai ei. Gödelin tulos voidaan yleistää: matemaattisten lauseiden todistus ei ole mekaaninen toimenpide

7 © Lammi-Niskala-Kossarev7 Muita ratkeamattomien ongelmien keksijöitä: Alonso Church, Stephen Kleene, Emil Post, Alan Turing. Tietokoneita koskevat tulokset esitettiin jo 1930-luvulla, ennen kuin tietokoneita oli edes olemassa.

8 © Lammi-Niskala-Kossarev8 3.1.2 Church-Turingin teesit Algoritmin määritelmiä: – –rekursiivisten funktioiden teorian mukaiset säännöt uusien matemaattisten funktioiden muodostamiseksi olemassa olevista funktioista (Kleene 1935) – –erään symbolin manipulointiin tarkoitetun formalismin -kalkyylin mukainen määritys (Church 1935). – –Turingin koneelle (hypoteettinen kone) annettava käskyjoukko (Turing 1937) – –Markovin algoritmit (Markov 1951)

9 © Lammi-Niskala-Kossarev9 Church-Turningin teesit: Kaikki tunnetut, järkevät algoritmin määritelmät ovat keskenään ekvivalentteja (mm. kphn 2 'ohjelmointikieli') Kaikki tulevatkin, järkevät algoritmin määritelmät ovat ekvivalentteja tunnettujen määritelmien kanssa.

10 © Lammi-Niskala-Kossarev10 Monisteessa käytetty kieli voidaan todistaa yhtä vahvaksi kuin muutkin algoritmin määritelmät.   Algoritmeja ovat tällä kurssilla algoritmien esitykseen käytetyn pseudokielen avulla kirjoitettavissa olevat toimenpidesarjat   Algoritmi voidaan määritellä miten hyvänsä, kunhan sen mukaiset algoritmit voidaan suorittaa tietokoneella   tarvitseeko tietokone määritellä tarkemmin?

11 © Lammi-Niskala-Kossarev11 ei, koska jokainen algoritmi, joka voidaan suorittaa jossakin tietokoneessa, voidaan suorittaa missä tahansa toisessa tietokoneessa (algoritmien universaalisuus) Tietokoneet voivat myös simuloida toisiaan: tulkit, simulaattorit, universaaliohjelmat. Jokaista ohjelmointikieltä varten on oltava tulkki/kääntäjä. sen avulla voidaan suorittaa kaikki ne tehtävät, jotka voidaan suorittaa toisella tietokoneella, joka ymmärtää toista ohjelmointikieltä

12 © Lammi-Niskala-Kossarev12 3.1.3 Osittainen laskettavuus Täysin laskettavissa oleva ongelma: – –ratkaisuksi olemassa algoritmi, joka täyttää algoritmin perusvaatimukset (sivu 16) – –mm. pysähtyy ja antaa aina oikean vastauksen Osittain laskettavissa oleva ongelma: – –ongelmaan ratkaisuun on mahdollista konstruoida algoritmi, joka antaa ' kyllä'- vastauksen, mutta ei löydä vastausta, jos se olisi 'ei'.

13 © Lammi-Niskala-Kossarev13 Esimerkki: Fermatin suuri lause FOR a- 1,2,3,... DO FOR b:= 1,2,3,... DO FOR c:= 1,2,3,... DO FOR n:= 3,4,5... DO IF a^n + b^n = c^n THEN Tulosta luvut a, b, c, n ENDIF ENDFOR EI TOIMI ! – –ei testata ykköstä suurempia a:n arvoja – –kaikki silmukat äärettömiä

14 © Lammi-Niskala-Kossarev14 Järjestetään lukunelikot kasvavan summan mukaan: käydään summia 6,7,8,…ääretön MODULE Fermat (lukunelikot) REPEAT Ota jonosta seuraava nelikko (a, b, c, n) UNTIL a^n + b^n = c^n Tulosta luvut a, b, c, n ENDMODULE Moduuli käy läpi järjestyksessä nelikot (1,1,1,3) (1,1,1,4) (1,1,2,3) (1,2,1,3)... loputtomasti. Jos Fermatin lause pitää paikkansa, algoritmi ei pysähdy. Vastausta siihen, että pysähtyykö moduuli, ei tiedetä. Nykykäsityksen mukaan algoritmi ei pysähdy

15 © Lammi-Niskala-Kossarev15 3.1.4 Pysähtymisongelma Olkoon annettu mielivaltainen ohjelma P ja sen mielivaltaiset syöttötiedot D. Pysähtyykö ohjelma P syötteellä D vai ei ? Merkintä P(D): suoritetaan ohjelma P syöttötiedoin D:

16 © Lammi-Niskala-Kossarev16 Pysähtymis... Pysähtymisongelma on osittain laskettavissa. Monisteessa pyritään todistamaan, että pysähtymisongelma ei ole laskettavissa. Vastaoletus: pysähtymisongelma on algoritmisesti ratkeava: on siis olemassa algoritmi, joka kertoo pysähtyykö P syötteellä D.

17 © Lammi-Niskala-Kossarev17 MODULE pysähtymistesti (P, D) RETURNS k/e (* moduuli palauttaa arvon kyllä jos P(D) pysähtyy, ja arvon ei jos P(D) ei pysähdy *) ENDMODULE MODULE pysähtyyitsellään(P) RETURN k/e RETURN pysähtymistesti(P,P) ENDMODULE MODULE funny (P) RETURNS k tai ei pysähdy IF pysähtyyitsellään(P)=kyllä THEN REPEAT UNTIL 1=0 ("ikuinen *) ELSE RETURN kyllä ENDIF ENDMODULE

18 © Lammi-Niskala-Kossarev18 Pysähtymisongelma... Funnyn määrittelyssä ristiriita, joten vastaoletus on väärä ja siis pysähtymistesti moduulia ei voi olla olemassa.

19 © Lammi-Niskala-Kossarev19 3.1.5 Muita algoritmisesti ratkeamattomia ongelmia Totaalisuusongelma: voidaanko kirjoittaa algoritmi, joka kertoo pysähtyykö P kaikilla P:n syötteillä. Ohjelma P on totaalinen, jos P pysähtyy kaikilla syötteillä.

20 © Lammi-Niskala-Kossarev20 Totaalisuus.. Oletetaan, että moduuli totaalinen on olemassa: MODULE totaalinen (P) RETURNS k/e (* jos P pysähtyy kaikilla P:n syötteillä*) (* moduuli palauttaa arvon k muuten e*) ENDMODULE MODULE höpöhöpö (S) suorita P(D) ENDMODULE

21 © Lammi-Niskala-Kossarev21 Totaalisuus… Nyt kutsu totaalinen(höpöhöpö) palauttaa arvon k, jos höpöhöpö pysähtyy ja arvon e muulloin ==> voidaan tehdä pysähtymistesti: MODULE pysähtymistesti (P;D) RETUNS k/e RETURN totaalinen(höpöhöpö) ENDMODULE Koska tiedetään, että pysähtymistestiä ei ole olemassa, täytyy totaalisuusongelman laskettavuutta koskevan oletuksen olla väärä==> totaalisuusongelma ei ole laskettavissa.

22 © Lammi-Niskala-Kossarev22 Ekvivalenssiongelma Kaksi ohjelmaa Pl ja P2. Ekvivalenssiongelma: – –antavatko Pl ja P2 samoilla syöttötiedoilla saman vastauksen. Ekvivalenssiongelma ei ole laskettavissa. Todistusta varten tehdään vastaoletus, ts. on olemassa moduuli: MODULE ekvivalentti(Pl, P2) RETURNS k/e (* jos Pl ja P2 antavat aina saman tuloksen samalla *) (* syötteellä, moduuli palauttaa arvon k muuten *) (* arvon e *) ENDMODULE

23 © Lammi-Niskala-Kossarev23 Ekvivalenssiongelma nyt voidaan kirjoittaa moduulit: MODULE Tulosta_13?(D) P(D) Tulosta "13" ENDMODULE MODULE Tulosta_13(D) Tulosta "13" ENDMODULE

24 © Lammi-Niskala-Kossarev24 Ekvivalenssiongelma Kysymys: "Ovatko Tulosta_13? ja Tulosta_13 ekvivalentit" = onko P totaalinen ? Siis voidaan kirjoittaa totaalisuusongelman ratkaiseva algoritmi: MODULE totaalinen (P) RETURNS k/e RETURN ekvivalentit (Tulosta_13?, Tulosta_13) ENDMODULE Edellisen mukaan tämä ei ole mahdollista, joten ekvivalenssiongelman ratkaisua koskeva oletus on väärä==> ekvivalenssiongelma ei ole laskettavissa.

25 © Lammi-Niskala-Kossarev25 Ricen teoreema Ricen teoreema: Olkoon tehtävä T ja algoritmi A. Ei ole olemassa algoritmia, joka kertoisi, tekeekö algoritmi A tehtävän T.

26 © Lammi-Niskala-Kossarev26 Yhteenveto laskettavuudesta Jos on olemassa algoritmi, joka ratkaisee annetun tehtävän kaikilla mahdollisilla syötteillä, sanotaan, että tehtävä on laskettavissa. Jos sanotaan, että tehtävä ei ole laskettavissa (edes osittain), niin silloin pystytään todistamaan, että ei ole olemassa algoritmia, joka ratkaisee tehtävän kaikilla syötteillä. Voidaan sanoa myös, että tehtävä on algoritmisesti ratkeamaton. Lisäksi on olemassa tehtäviä, joiden laskettavuudesta ei tiedetä: ei ole tehty algoritmia eikä toisaalta osoitettu, että tällaista algoritmia ei ole olemassa.

27 © Lammi-Niskala-Kossarev27 Yhteenveto laskettavuudesta Kyllä/ei -tehtävät: Ongelma on osittain laskettavissa, jos sille on olemassa algoritmi, joka antaa tuloksena 'kyllä', silloin kun pitääkin, mutta saattaa jäädä ikuiseen silmukkaan silloin kun tuloksena olisi 'ei'. Esim. pysähtymisongelma on osittain laskettavissa. – –antaa kyllä-vastauksen, kun P(D) pysähtyy – –ei anna mitään vastausta, jos P(D) ei pysähdy ekvivalenssiongelma ja totaalisuusongelma eivät ole osittainkaan laskettavissa.


Lataa ppt "© Lammi-Niskala-Kossarev1 Algoritmiteoriaa Toiset tehtävät (ja sen ratkaisut) vaikeampia kuin toiset Toiset tehtävät (ja sen ratkaisut) vaikeampia kuin."

Samankaltaiset esitykset


Iklan oleh Google