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

Slides:



Advertisements
Samankaltaiset esitykset
15. Loogiset operaatiot.
Advertisements

Osaamisen ja sivistyksen parhaaksi Tilatiedot ja niiden muutokset
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
JavaScript (c) Irja & Reino Aarinen, 2007
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
Kysymykset eivät ole kovin vaikeita, joten älä huijaa!.
Preppaus ENA 4.
© Lammi-Niskala-Kossarev1 Johdatus tietojenkäsittelytieteeseen  Luentoja 58 h  Harjoituksia 14 kertaa * 2h = 28 h  Kaksi välitenttiä  Luentomoniste.
Langattomien laitteiden matematiikka 1
Ohjelma on kokoelma toimintaohjeita annetun tehtävän ______________________. Ohjelmassa on peräkkäisten toimintojen lisäksi yleensä valintaa ja _____________.
Sovellusohjelman suunnittelu & toteutus
AS Automaation signaalinkäsittelymenetelmät
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Toistolauseet
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Pasi Kaipainen Tietokone ja tietoverkot ty ö v ä lineen ä – kurssi Tekij ä n p ää aine!!
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
Fi.opasnet.org fi.opasnet.org/fi/Ydinvoima Haluamme tietää Sinun mielipiteesi. Äänestikö kansanedustajasi oikein ydinvoimasta? Kansalaisparlamentti ydinvoimasta.
Lapin sairaanhoitopiiri Tietohallintastrategia 2007–2011.
RSA – Julkisen avaimen salakirjoitusmenetelmä Perusteet, algoritmit, hyökkäykset Matti K. Sinisalo, FL.
5.3.3 Koodin generointi Koodin generointi tarkoittaa objektikoodin eli konekielisen ohjelman tuottamista. Generointi jakautuu kolmeen osatehtävään: 1.Muistin.
Kompleksisuuden kertaluokat
2. Vuokaaviot.
13. Hyvä ohjelmointitapa (osa 1)
UMF I Luento 2. Aika Luennot, Klo 14–16 to 4.9 – ke 10.9 ke 24.9 – ke 1.10 ke – pe Demot, Klo 10–12/12–14/14–16 Pe 12.9, Ti 16.9, Pe 19.9.
Valmennuskurssi sosiaalitieteiden tutkinto-ohjelmaan
Janan keskinormaali A A ja B ovat janan päätepisteet ja M sen keskipiste. M Janan keskinormaali on kohtisuorassa janaa vastaan sen keskipisteessä. AM =
Raja-arvon määritelmä
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
Visual Basic -ohjelmointi
2.7 Rekursio ja iteraatio Algoritminen ongelmanratkaisu ei ole
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
2.8 TIETO- JA TALLETUSRAKENTEET
UMF I Luento 7. Viime kerralta Lue II.5 ja II.6. Lause II.5.1 tapauksessa f(x,y) = (x, sin(y)) ja g(x, y) = (cos(x), y). Voit lähettää epäselvistä kohdista.
Toimisto-ohjelmat TVT osana Sädettä. Tehdään kyselylomake joko tekstinkäsittely- tai taulukkolaskentaohjelmalla. Pilvipalveluita käytettäessä saadaan.
C 1. Testaus on ”sarja toimintoja” Itse asiassa, testaus on vuorovaikutusta, jota rytmittää ohjelmiston arviointi. Vaikka on hyödyllistä tunnistaa sarja.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
3.2 Kompleksisuus Vain pieni osa kaikista tehtävistä on laskettavissa tai edes osittainkaan laskettavissa. Laskettavien osalta saattaa olla tarpeellista.
OHJELMOINTITAITO ICT02D 12 ECTS. OPINTOJAKSON TOTEUTUS  KESTO: –  AVOIMEN OPISKELIJAT: – YKSI LUOKA (SUOMI) – LUOKKA ICT02O-1.
@ Leena Lahtinen Toistorakenne Ohjelmassa toistetaan tiettyjä toimenpiteitä monta kertaa peräkkäin Toisto noudattaa sille kuuluvia tarkkoja standardoituja.
1 Ohjelmointikielten varhaishistoria Esa-Matti Miettinen
PELIEN SUUNNITTELUA ALGORITMIT JA NIIDEN SUUNNITTELU Jussi RaskuSeinäjoen Kansalaisopisto Aki Sirviö2014.
Rinnakkaisuus Järjestelmässä, jossa voi olla useita prosesseja rinnakkain suorituksessa voi tulla tilanteita, joissa prosessien suoritusta täytyy kontrolloida.
Heikki Hyötyniemi Teknillinen korkeakoulu, Systeemitekniikan laboratorio 1. Älykäs WWW Totuus vai Todellisuus - tutkimuksen haasteet Heikki.
FunktiottMyn1 Funktiot Funktiot voidaan jakaa –Kirjastofunktioihin, jotka ovat valmiina kaikkien käytössä. Erikoisempien kirjastofunktioiden käyttöönotto.
Luku- ja tenttivihjeet 5 Eero Salmenkivi Opettajankoulutuslaitos.
Visual Basic -ohjelmointi
11. Relaatiotietokannan suunnittelualgoritmit ja lisäriippuvuudet Tällä kurssilla käsitellään kirjan luvusta 11 ainoastaan algoritmi 11.1 häviöttömän liitoksen.
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
Kontrollirakenteet laajemmin
Visual Basic -ohjelmointi
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
21. Rekursio.
FOR i := 0...N-1 DO summa := summa + A[i] tulo := tulo * A[i] ENDFOR.
Antti-Jussi Lakanen Nuorten peliohjelmointi 2011 / Jyväskylän yliopisto.
Ohjelma Mikro-ohjelmointi Symbolinen konekieli Osoitustavat.
Funktiot Funktio = mahdollisten syöte- ja tulostearvojen välinen suhde siten, että kuhunkin syötearvoon on liitetty tulostearvo –Funktion laskeminen =
Ohjelmassa tänään Ohjelmointimallit Pseudokieli Modulaarisuus.
Kesätyöntekijöiden kommentteja Opasnetistä ja ydinvoimatyöstä: ”Kun tulin kesätöihin minulla oli vain jokin suuntaa antava aavistus siitä mitä meinattiin.
1.0 TE DiplomityöEsitelmä/ / JT Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olio- orientoituneeseen ohjelmointiin Jukka.
8. Rekursio.
Kyselylomakkeen tekeminen
Toimisto-ohjelmat TVT osana Sädettä.
Y56 Luku 21 Yrityksen teoria: kustannuskäyrät
3 Suureyhtälöt Fysiikan tehtävän ratkaisu:
13. Loogiset operaatiot.
Ohjelmien suunnittelu
1. Algoritmi.
8. Rekursio.
© Lammi-Niskala-Kossarev
13. Loogiset operaatiot.
Esityksen transkriptio:

© 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

© 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

© Lammi-Niskala-Kossarev 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

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

© 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

© Lammi-Niskala-Kossarev 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

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

© Lammi-Niskala-Kossarev 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)

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

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

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

© Lammi-Niskala-Kossarev 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'.

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

© 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

© Lammi-Niskala-Kossarev 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:

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

© 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

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

© Lammi-Niskala-Kossarev 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ä.

© 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

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

© 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

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

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

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

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

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