OHJ-2100 Ohjelmistotieteen perustyökaluja kesä 2013: laskuharjoituksia

Samankaltaiset tiedostot
MAT Program Verification (Ohjelmien todistaminen) merkintöjen selityksiä

Talousmatematiikan perusteet, L2 Kertaus Aiheet

Talousmatematiikan perusteet, L2 Kertaus Aiheet

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Talousmatematiikan perusteet, L2

Word Taulukko-ominaisuus

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

3. Kirjoita seuraavat joukot luettelemalla niiden alkiot, jos mahdollista. Onko jokin joukoista tyhjä joukko?

Vaihtoehtoinen tapa määritellä funktioita f : N R on

Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Tehtäväsarja I Seuraavissa tehtävissä harjoitellaan erilaisia todistustekniikoita. Luentokalvoista 11, sekä voi olla apua.

Johdatus matemaattiseen päättelyyn

Diskreetin matematiikan perusteet Laskuharjoitus 1 / vko 8

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016

Matematiikan tukikurssi, kurssikerta 1

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Säännöllisten kielten sulkeumaominaisuudet

811120P Diskreetit rakenteet

Kurssikoe on maanantaina Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.

Matematiikan johdantokurssi, syksy 2016 Harjoitus 11, ratkaisuista

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.

Tietotekniikan valintakoe

Automaatit. Muodolliset kielet

Testaa taitosi 1: Lauseen totuusarvo

1. Logiikan ja joukko-opin alkeet

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

Python-ohjelmointi Harjoitus 2

Johdatus matemaattiseen päättelyyn (5 op)

811120P Diskreetit rakenteet

S BAB ABA A aas bba B bbs c

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

Johdatus matematiikkaan

Luonnolliset vs. muodolliset kielet

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

Reaalilukuvälit, leikkaus ja unioni (1/2)

Johdatus matemaattiseen päättelyyn

Logiikan kertausta. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

Ratkaisu: a) Kahden joukon yhdisteseen poimitaan kaikki alkiot jotka ovat jommassakummassa joukossa (eikä mitään muuta).

ITKP102 Ohjelmointi 1 (6 op)

(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen.

T Syksy 2005 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet )

(2n 1) = n 2

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus.

Matriisit, kertausta. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

Nimitys Symboli Merkitys Negaatio ei Konjuktio ja Disjunktio tai Implikaatio jos..., niin... Ekvivalenssi... jos ja vain jos...

MS-A0402 Diskreetin matematiikan perusteet

T Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

811120P Diskreetit rakenteet

Kertausta 1. kurssikokeeseen

T Kevät 2006 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (opetusmoniste, kappaleet )

4 Matemaattinen induktio

1 Lineaariavaruus eli Vektoriavaruus

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. maaliskuuta 2011

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

a k+1 = 2a k + 1 = 2(2 k 1) + 1 = 2 k+1 1. xxxxxx xxxxxx xxxxxx xxxxxx

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 3 (9 sivua) OT

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1.

Matematiikan tukikurssi

Todistusmenetelmiä Miksi pitää todistaa?

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012

Diskreetin matematiikan perusteet Malliratkaisut 2 / vko 38

Matematiikan tukikurssi

Ratkaisut Summa on nolla, sillä luvut muodostavat vastalukuparit: ( 10) + 10 = 0, ( 9) + 9 = 0,...

c) 22a 21b x + a 2 3a x 1 = a,

Onko kuvaukset injektioita? Ovatko ne surjektioita? Bijektioita?

Salausmenetelmät. Veikko Keränen, Jouko Teeriaho (RAMK, 2006)

Äärellisten mallien teoria

T Kevät 2009 Logiikka tietotekniikassa: perusteet Laskuharjoitus 8 (Predikaattilogiikka )

Kurssikoe on maanantaina Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

a) Mitkä seuraavista ovat samassa ekvivalenssiluokassa kuin (3, 8), eli kuuluvat joukkoon

13. Loogiset operaatiot 13.1

MS-A0402 Diskreetin matematiikan perusteet

2.1. Tehtävänä on osoittaa induktiolla, että kaikille n N pätee n = 1 n(n + 1). (1)

Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä

MAT Algebra I (s) periodilla IV 2012 Esko Turunen

1. Mikä on lukujen 10, 9, 8,..., 9, 10 summa? 2. Mikä on lukujen 10, 9, 8,..., 9, 10 tulo? =?

uv n, v 1, ja uv i w A kaikilla

Matriisit, L20. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

Jokaisen parittoman kokonaisluvun toinen potenssi on pariton.

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

a b 1 c b n c n

Luonnollisten lukujen ja kokonaislukujen määritteleminen

1. Esitä rekursiivinen määritelmä lukujonolle

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013

Injektio (1/3) Funktio f on injektio, joss. f (x 1 ) = f (x 2 ) x 1 = x 2 x 1, x 2 D(f )

Transkriptio:

OHJ-2100 Ohjelmistotieteen perustyökaluja kesä 2013: laskuharjoituksia Antero Kangas & Antti Valmari Tampereen teknillinen yliopisto Matematiikan laitos 24. toukokuuta 2013 Käytännön asioita Kirjoita vastaus puhtaaksi A4-kokoisille papereille tai konsepteille. Nido palautettavat paperit yhteen, jos niitä on useampi kuin yksi. Kirjoita vastaus siistillä käsialalla tai tekstinkäsittelyohjelmalla. Vastauksissa tulee käyttää samoja symboleita kuin kurssilla muutenkin. Kirjoita palautettavien papereiden ensimmäisen paperin (jos niitä on useita) alkuosaan selvästi näkyville niiden tehtävien numerot, jotka olet valmistautunut esittämään taululla. Palautettavissa papereissa tulee selkeästi olla merkittynä palautettujen tehtävien numerot, eri tehtävät selkeästi erotettuna (esim. poikkiviiva tehtävien välissä). Kirjoita vastauspaperisi yläreunaan sen laskuharjoitusryhmän tunnus eli kirjain ja numero, johon olet menossa sekä nimesi ja opiskelijanumerosi. Kirjoita opiskelijanumerosi niin selvästi, että assistentti ei vahingossa lue sitä väärin ja kirjaa suorituksesi jonkun muun hyväksi Vinkkejä Ennen kuin alat laskea, lue prujun ko. asiaa käsittelevä osuus tai käy ko. luennot. Lue tehtävä huolellisesti. Mieti, onko lopullinen vastauksesi järkevä. Prujussa on neuvoja koskien mm. mitä tehdä, jos logiikan kaavan osoittaminen oikeaksi ei onnistu sekä erityisesti miten lisätä uskoa tilapredikaatin oikeellisuuteen. Samoja periaatteita voi soveltaa muunkinlaisten tehtävien vastausten oikeellisuuden tai järkevyyden tarkistamiseen. Valmistaudu esittämään taululla kaikki palauttamasi tehtävät. Saat harjoituksista parhaan hyödyn tutustumalla etukäteen niihinkin tehtäviin, joita et palauta.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 2 Pistejärjestelmä lyhyesti Vastauksia ei varsinaisesti pisteytetä, vaan opiskelija palauttaa ne vastaukset, jotka hän on valmistautunut esittämään taululla. Assistentti valitsee kuka laskee minkäkin tehtävän taululle. Mikäli laskun esitys taululla ei suju, tai tehtävää ei ole tehty riittävän huolella, voidaan kyseinen tehtävä hylätä laskijan osalta ja assistentti tarkistaa hänen muutkin vastauksensa ja harkintansa mukaan joko hyväksyy tai hylkää ne. Assistentilla on kuitenkin oikeus tarkistaa muidenkin kuin vain taululla käyneiden vastaukset ja päättää, onko vastaus riittävä, esimerkiksi että kaikkiin alakohtiin on annettu vastaus. Tehtäviä on palautettava hyväksytysti 27, joista ainakin 15 tehtäväryhmistä 7,..., 12. Merkkien selityksiä Tähän lukuun on koottu jatkossa käytettävät matemaattiset ja pseudokoodimerkinnät kaikkein tutuimpia lukuunottamatta. Matematiikka yleistä x Suurin kokonaisluku, joka on enintään yhtäsuuri kuin x. Esimerkiksi 4 = 4,2 = 4,9 = 4 ja 4 = 4 ja 4,2 = 4,9 = 5. Hyödyllisiä kaavoja: x x ja 0 x x < 1. x Pienin kokonaisluku, joka on vähintään yhtäsuuri kuin x. Esimerkiksi 4 = 4 ja 4,2 = 4,9 = 5 ja 4 = 4,2 = 4,9 = 4. Hyödyllisiä kaavoja: x x ja 0 x x < 1 ja x = x. i I Jos on jokin sopivat ehdot täyttävä binäärioperaattori, niin i I f(i) tarkoittaa, että käydään läpi joukon I alkiot, lasketaan kullekin f(i), ja yhdistetään tulokset operaattorilla 5. Esimerkki: + i {2,3,4,5} i 2 = 2 2 +3 2 +4 2 +5 2 = i 2. Käytetään erityisesti joukko-opin operaattorien ja yhteydessä. i=2 N Tarkoittaa relaation transitiivista sulkeumaa. Älä sekoita relaatiota implikatioon. Käytännössä u v tarkoittaa, että u:sta pääsee v:hen nollalla tai useammalla askeleella. Esimerkiksi graafin tapauksessa askel on siirtyminen kaaren alkusolmusta sen loppusolmuun. Katso luonnolliset luvut. Z, Z +, Z Katso kokonaisluvut. Q, Q +, Q Katso rationaaliluvut. R, R +, R Katso reaaliluvut. assosiatiivisuuden suunta Katso sitovuuden suunta.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 3 kokonaisluvut Luvut..., 3, 2, 1,0,1,2,3,... Kokonaislukujen joukkoa merkitäänz. Positiivisten kokonaislukujen joukko on Z + = {n Z n > 0} ja negatiivisten kokonaislukujen joukko on Z = {n Z n < 0}. käytössä oleva lukujoukko Tässä tekstissä, ellei käytettävien lukujen joukkoa ole erikseen ilmoitettu, niin käytetään kokonaislukujen joukkoa. liitännäisyyden suunta Katso sitovuuden suunta. luonnolliset luvut Luvut 0, 1, 2, 3,... Luonnollisten lukujen joukkoa merkitään N. Varoitus: jotkut kirjoittajat tarkoittavat luonnollisilla luvuilla lukuja 1, 2, 3,... presedenssi Katso sitovuustaso. rationaaliluvut Rationaalilukujen joukko Q = { m m Z n Z {0} }. Positiivisten n rationaalilukujen joukko on Q + = { x Q x > 0 } ja negatiivisten rationaalilukujen joukko on Q = {x Q x < 0}. reaaliluvut Reaalilukujen joukkoa merkitään R. Positiivisten reaalilukujen joukko on R + = {x R x > 0} ja negatiivisten reaalilukujen joukko on R = {x R x < 0}. sitovuuden suunta Kutsutaan myös nimellä liitännäisyyden tai assosiatiivisuuden suunta. Operaattorin sitovuuden suunta määrittelee, miten x y z tulkitaan. Jos sitoo vasemmalle, niin x y z = (x y) z. Jos sitoo oikealle, niin x y z = x (y z). Vertailuoperaattorit eivät matematiikassa sido kumpaankaan suuntaan: kaava x y = z ei tarkoita (x y) = z eikä x (y = z) vaan (x y) (y = z). Tulkinta (x y) = z ei olisi matematiikassa yleensä edes järkevä, koska (x y) tuottaa totuusarvon, ja totuusarvon vertaamista lukuun tms. ei ole yleensä määritelty. Ohjelmointikielissä tilanne on toinen: niissä esiintyy vasemmalle ja/tai oikealle sitovia vertailuoperaattoreita. Katso myös sitovuustaso. Katso logiikan jne. operaattorien sitovuuden suunnat otsikon Logiikka jne. kohdasta sitovuuden suunta. sitovuustaso Kutsutaan myös nimellä presedenssi. Jos operaattori sitoo voimakkaammin eli on korkeammalla sitovuustasolla kuin operaattori, niin x y z tulkitaan (x y) z ja x y z tulkitaan x (y z). Ihmisellä on taipumus ottaa kaavoja jäsentäessään huomioon kaavan sisällön ja ladonnan antamat vihjeet. Esimerkiksi x : P(x) x : Q(x) tulee helposti tulkittua kuten ( x : P(x)) ( x : Q(x)), vaikka logiikan tässä tekstissä käytettävien sitovuussääntöjen mukaan se tarkoittaa x : (P(x) x : Q(x)). Tästä syystä kaavoja kirjoitettaessa kannattaa käyttää ylimääräisiä sulkuja, ja kaavoja lukiessa kannattaa ottaa huomioon mahdollisuus, että kirjoittaja on vahingossa jättänyt pois välttämättömiä sulkuja. Ylimääräisiä sulkuja kannattaa käyttää myös siksi, että kirjallisuudessa käytetään vaihtelevia sitovuussääntöjä. Katso myös sitovuuden suunta. Katso logiikan jne. operaattorien sitovuustasot otsikon Logiikka jne. kohdasta sitovuustaso.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 4 Logiikka Ja. ϕ ξ tarkoittaa, että sekä ϕ että ξ pätee. Tai. ϕ ξ tarkoittaa, että ϕ pätee tai ξ pätee tai molemmat pätevät. Ei. ϕ tarkoittaa, että ϕ ei päde. Implikaatio loogisena operaattorina. ϕ ξ tarkoittaa, että jos ϕ pätee, niin myös ξ pätee. Toisin sanoen, ϕ ξ tuottaa False jos ja vain jos ϕ tuottaa True ja ξ tuottaa False. Vertaa. Ekvivalenssi loogisena operaattorina. ϕ ξ on sama kuin ϕ ξ ja ξ ϕ yhdessä. Toisin sanoen, ϕ ξ tuottaa True jos ja vain jos joko sekä ϕ että ξ tuottaa True, tai sekä ϕ että ξ tuottaa False. Vertaa. 1. Implikaatio kahden väittämän vertailuna. Käytetään yleensä ilmaisemaan päättelyaskelta. ϕ ξ on voimassa jos ja vain jos kaikissa niissä tilanteissa jotka ovat kyseisessä asiayhteydessä mahdollisia ja joissa ϕ pätee, myös ξ pätee. (Eri tilanteita saadaan vaihtelemalla ϕ:n ja ξ:n sisällä esiintyvien vapaiden muuttujien arvoja.) Toisin sanoen, ϕ ξ on voimassa jos ja vain jos ϕ ξ tuottaa aina True riippumatta ϕ:n ja ξ:n sisällä olevien vapaiden muuttujien arvoista, kunhan ei valita arvoyhdistelmää, joka on kyseisessä asiayhteydessä mahdoton. Esimerkiksi x > 1 x+y > 1 ei yleisesti ole pätevä päätelmä, mutta se on pätevä, jos asiayhteyden vuoksi tiedetään, että y 0. on samankaltainen kuin, mutta esiintyy kaavojen välissä ja esiintyy kaavan sisällä. Tämän vuoksi saa kirjoittaa (ϕ ξ) ζ, mutta ei saa kirjoittaa (ϕ ξ) ζ, koska siinä joutuu kaavan sisään. Saa kirjoittaa ϕ ξ ζ. Se tarkoittaa samaa kuin ϕ ξ ja ξ ζ yhdessä, mutta ϕ ξ ζ tarkoittaa (ϕ ξ) ζ. (Varoitus: joillakin kirjoittajilla ϕ ξ ζ tarkoittaa ϕ (ξ ζ).) 2. Käytetään usein myös samassa merkityksessä kuin. Ekvivalenssi kahden väittämän vertailuna. ϕ ξ on voimassa jos ja vain jos ϕ pätee täsmälleen samoissa asiayhteyden sallimissa tilanteissa kuin ξ. Vertaa ja. Kaikki-kvanttori. x : ϕ(x) tarkoittaa, että jokainen alkio x toteuttaa ehdon ϕ(x). x; ϕ(x) : ξ(x) tarkoittaa, että jokainen ehdon ϕ toteuttava alkio x toteuttaa myös ehdon ξ. Se tarkoittaa siis samaa kuin x : ϕ(x) ξ(x). (Varoitus: tämä tapa käyttää välimerkkejä kvanttorin yhteydessä ei ole kovin yleinen, vaikka se auttaa ryhmittelemään kaavoja helpommin ymmärrettäviksi.) x A : ϕ(x) tarkoittaa, että jokainen joukon A alkio x toteuttaa ehdon ϕ. Se tarkoittaa siis samaa kuin x : x A ϕ(x). On olemassa -kvanttori. x : ϕ(x) tarkoittaa, että on olemassa ainakin yksi alkio x, joka toteuttaa ehdon ϕ(x). x; ϕ(x) : ξ(x) tarkoittaa, että on olemassa ainakin yksi ehdon ϕ toteuttava alkio x, jolle myös ξ pätee. Se tarkoittaa siis samaa kuin x : ϕ(x) ξ(x). (Varoitus: tämä tapa käyttää välimerkkejä kvanttorin yhteydessä ei ole kovin yleinen, vaikka se auttaa ryhmittelemään kaavoja helpommin ymmärrettäviksi.)

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 5 x A : ϕ(x) tarkoittaa, että ainakin yksi joukon A alkio x toteuttaa ehdon ϕ. Se tarkoittaa siis samaa kuin x : x A ϕ(x). False Logiikan totuusarvo epätosi. Jos kaava ei päde, niin sen totuusarvo on False. Usein (varsinkin ohjelmointikielissä), mutta ei tällä kurssilla, False:n tilalla käytetään lukuarvoa 0. kvanttori Katso ja. Joskus kvanttoreiksi kutsutaan myös muita samaan tapaan käytettäviä symboleita. määrittelemättömät operaatiot kaavoissa Predikaatti on hyvin määritelty, jos ja vain jos siinä olevat määrittelemättömiä operaatioita sisältävät predikaatit eliminoituvat seuraavilla laskusäännöillä: False (mitä tahansa) (mitä tahansa) False False, True (mitä tahansa) (mitä tahansa) True True, False (mitä tahansa) True ja (mitä tahansa) True True. Siten esimerkiksi reaaliluvuilla x : 1 0 1 = 0 x x ei ole hyvin määritelty, mutta x : 1 0 x = 0 on hyvin määritelty ja tuottaa True. x Predikaatit pitää kirjoittaa niin, että ne ovat hyvin määriteltyjä. sidottu muuttuja Muuttuja x on sidottu esiintyessään kvanttorin vaikutuspiirissä. Jos muuttuja ei ole sidottu, se on vapaa. Esimerkiksi kaavassa y > 0 ( y : x + y < 0) y = 0 keskimmäiset y:n esiintymät ovat sidottuja ja reunimmaiset vapaita. Tilanne voidaan tulkita myös siten, että kvanttori esittelee uuden muuttujan, jolla voi olla sama nimi kuin jollakin muulla muuttujalla. sitovuuden suunta Tässä tekstissä,, ja sitovat vasemmalle, ja ja käyttäytyvät vertailuoperaattorien tavoin (katso ). Varoitus: sitovuuden suunta vaihtelee kirjallisuudessa. Katso myös Matematiikka yleistä sitovuuden suunta. sitovuustaso Logiikan operaattoreiden sitovuustasot vaihtelevat kirjallisuudessa. Tässä tekstissä ne ovat voimakkaimmasta heikoimpaan:,,,,, kvanttorit. Kaavojen vertaamiseen käytettävät operaattorit ja sitovat edellä lueteltuja heikommin ja käyttäytyvät vertailuoperaattorien tavoin. Logiikan ulkopuolisista arvoista totuusarvoja tuottavat operaattorit kuten =,, < ja sitovat voimakkaammin kuin loogiset operaattorit. Katso myös Matematiikka yleistä sitovuustaso. totuusarvo Logiikan kaavan tuottama arvo. Totuusarvoja ovat False ja True. True Logiikan totuusarvo tosi. Jos kaava pätee, niin sen totuusarvo on True. Usein (varsinkin ohjelmointikielissä), mutta ei tällä kurssilla, True:n tilalla käytetään lukuarvoa 1. vapaa muuttuja Katso sidottu muuttuja. Joukko-oppi Tyhjä joukko, eli joukko, jossa ei ole alkioita. Pätee A = x : x / A. {...} {a 1,a 2,...,a n } on joukko, jonka alkiot ovat a 1,a 2,...,a n. Pätee x {a 1,a 2,...,a n } x = a 1 x = a 2 x = a n. Esimerkki: Viikonpäivät = { maanantai, tiistai,...,sunnnuntai }. {} on johdonmukainen mutta melko harvoin käytetty vaihtoehtoinen merkintä joukolle.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 6 {x ϕ(x)} on niiden alkioiden x joukko, jotka toteuttavat ehdon ϕ. Esimerkki: {x y Z : x = 2 y} on parillisten kokonaislukujen joukko. Pätee x {x ϕ(x)} ϕ(x). {x A ϕ(x)} on niiden A:n alkioiden x joukko, jotka toteuttavat ehdon ϕ. Pätee {x A ϕ(x)} = {x x A ϕ(x)} = {x ϕ(x)} A. {f(x) ϕ(x)} on joukko, joka saadaan käymällä läpi ne alkiot x, jotka toteuttavat ehdon ϕ; laskemalla jokaiselle f(x); ja kokoamalla tulokset joukoksi. Esimerkki: {2 x x Z} on parillisten kokonaislukujen joukko. Varoitus: koska tämä merkintä ei erikseen kerro, mikä muuttuja käy arvoja läpi, on se epäselvä silloin kun kaavassa on useita muuttujasymboleita.... Katso. Joukkoon kuuluminen. Esimerkki: Tampere Suomen kaupungit. / Joukkoon kuulumattomuus. Esimerkki: Melbourne / Suomen kaupungit. Voidaan määritellä kaavalla x / A (x A). ε Tyhjä jono, joukon A 0 ainoa alkio. Katso. = Joukkojen yhtäsuuruus määritellään A = B x : x A x B. Osajoukko. Esimerkki: Suomen kaupungit Kaupungit. Pätee A B x : x A x B ja A B A B A = B. Aito osajoukko. Pätee A B A B A B. Varoitus: jotkut kirjoittajat käyttävät tarkoittamaan samaa kuin tarkoittaa tässä tekstissä. Unioni. Esimerkki: {1,2,3} {2,4} = {1,2,3,4}. Pätee A B = {x x A x B}. Leikkaus. Esimerkki: {1,2,3} {2,4} = {2}. Pätee A B = {x x A x B}. Joukkojen erotus. Esimerkki: {1,2,3} {2,4} = {1,3}. PäteeA B ={x x A x / B}. Kirjallisuudessa käytetään myös symbolia \. Tulojoukko. Esimerkki: {1,2,3} {2,4} = {(1,2),(1,4),(2,2),(2,4),(3,2),(3,4)}. Pätee A B = {(x,y) x A y B}. Myös useamman kuin kahden joukon yhdistäminen operaattorilla on mahdollista: A 1 A 2 A n = {(a 1,a 2,...,a n ) i; 1 i n : a i A i }. Tavallisten sulkujen tilalla käytetään toisinaan ja, jotta eri tulojoukkojen alkiot erottuisivat paremmin toisistaan eivätkä sekottuisi kaavan muihin sulkuihin. Kielten teoriassa sulut ja alkioiden väliset pilkut jätetään usein kokonaan pois. Silloin kun n = 1 katsotaan usein, että A 1 A n = A 1. Tarkkaan ottaen se on {(a) a A 1 }, mutta (a) ja a katsotaan usein samanveroisiksi. Silloin kun n = 0 on tulojoukossa täsmälleen yksi alkio. Sitä olisi johdonmukaista merkitä ja toisinaan merkitäänkin () tai. Tämä merkintä ei kuitenkaan ole käyttökelpoinen silloin kun sulut jätetään kokonaan pois. Silloin käytetään symbolia ε. A n A potenssiin n. A n = A A A, missä A esiintyy oikealla puolella n kertaa. Toisin sanoen se on kaikki A:n alkioista muodostettavissa olevat monikot, joissa on n alkiota. Erityisesti A 0 on alkioiden merkintätavasta riippuen {()}, { } tai {ε}.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 7 A A + Joukon A alkioista muodostettavissa olevien äärellisten jonojen joukko. Esimerkki: {+, } = {ε,+,,++,+, +,,+ + +,+ +,...}. Pätee A = A + {ε} = A 0 A 1 A 2. Joukon A alkioista muodostettavissa olevien epätyhjien äärellisten jonojen joukko. Pätee A + = A {ε} = A 1 A 2 A 3. A Äärellisen joukon A alkioiden määrä. Esimerkkejä: {+, } = 2, = 0 ja {1,2,3,2,1} = 3. 2 A Joukon A osajoukkojen joukko eli A:n potenssijoukko. Esimerkki: 2 {+, } = {,{+},{ },{+, }}. Pätee 2 A = {X X A}. P(A) Sama kuin 2 A. sitovuuden suunta Tässä tekstissä,, ja sitovat vasemmalle., /, ja ovat vertailuoperaattoreita ja käyttäytyvät sen mukaisesti. Katso myös Matematiikka yleistä sitovuuden suunta. sitovuustaso Tässä tekstissä sitoo voimakkaimmin, sitten, sitten ja yhtä voimakkaasti, ja lopuksi, /, ja. Kirjallisuudessa sitovuustasot saattavat vaihdella. Katso myös Matematiikka yleistä sitovuustaso. Pseudokoodi (ohjelmakoodi) Ohjelmien esittämisessä käytettävä pseudokoodi mukailee Algol Pascal Ada-kielten merkintöjä. Ehdoissa ja lausekkeissa on suosittu tavallisia matemaattisia merkintöjä. C/C++:sta on poimittu käteviä lisiä, kuten +=. Algol-tyylisten pseudokoodien käyttö on yleistä kirjallisuudessa. Monet C/C++-merkinnät ovat opetuskäyttöön huonoja koska ne ovat sekavia, ja sijoitus- ja yhtäsuuruusvertailuoperaattorit ovat ristiriidassa matematiikan yhtäsuuruusoperaattorin kanssa: matematiikassa yhtäsuuruus on =, mutta C++:n = tarkoittaa sijoitusta ja yhtäsuuruusoperaattorina on ==. Lisäksi pseudokoodin erilaisuus auttaa erottamaan yleiset asiat C++-sidonnaisista. Ellei toisin sanota tai asiayhteydestä ilmene, muuttujat ovat kokonaislukutyyppisiä.. Tietueen (tai olion) kentän valitsin. Esimerkki: henkilö.nimi. Toimii kuten C++:ssa. Osoittimen päässä olevaan tietueeseen viittaaminen. os on sama kuin C++:n *os, ja os.kenttä toimii kuten C++:n os->kenttä. := (Tavallinen) sijoitusoperaattori. v := e toimii kuten C++:n v = e. += v += e toimii muuten samoin kuin v := v+e, paitsi että v:n osoite lasketaan vain kerran. Tällä erolla on harvoin merkitystä. Merkitystä on esimerkiksi silloin, kun v on muotoa A[f(...)], missä funktion f laskenta aiheuttaa sivuvaikutuksia (kuten tulostusta). Kuten C++:n +=. = Kuten +=, mutta vähennyslaskulle. Kuten C++:n -=. = Kuten +=, mutta kertolaskulle. Kuten C++:n *=.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 8 and Muuten sama kuin, paitsi että oikeaa puolta ei lasketa, jos vasen tuotti False. Sama kuin C++:n &&. for Silmukkarakenne for i := ala to ylä do... endfor toimii kahta seikkaa lukuunottamatta samoin kuin C++:n for( i = ala; i <= ylä; ++i ){...}. Ensiksi, yläraja lasketaan ennen silmukan ensimmäistä kierrosta ja säilyttää arvonsa, vaikka sen laskemisessa tarvittavat tiedot muuttuisivat. Niinpä ylä := 3; for i := 1 to ylä do ylä := ylä+1 endfor lopettaa kun ylä = 6, toisin kuin C++:n vastaava silmukka. Toiseksi, for-silmukan sisällä ei saa yrittää sijoittaa muutttujaan i. Näin voidaan olla varmoja, että silmukka pyörii enintään max(0, ylä ala + 1) kierrosta. Sana to voidaan korvata sanalla downto, jolloin silmukkamuuttujan arvo alenee yhdellä joka kierroksella. if Ehtorakenne if ehto then... else... endif toimii kuten C++:n if( ehto ){...}else{...}. else-osan saa jättää pois. mod Jakojäännösoperaattori. Jos b 0, niin a mod b on se luku x, jolle b a +x = a. Einegatiivisilla a:n ja b:n arvoilla käyttäytyy kuten C++:n %. Negatiivisilla arvoilla syntyy b yleensä eroa, koska C++:n kokonaislukujen a/b pyöristää tuloksen (todennäköisesti) nollaa kohti, mutta a pyöristää pienempää lukua kohti. Tämän sekavuuden vuoksi mod:n b merkitys on syytä aina tarkastaa, jos haluaa käyttää sitä kun a < 0 tai b < 0. Nil or Osoittimen arvo silloin kun se ei osoita minnekään. Muuten sama kuin, paitsi että oikeaa puolta ei lasketa jos vasen tuotti True. Sama kuin C++:n. repeat Silmukkarakenne repeat... until ehto toimii kuten C++:n do{...}while(!ehto );, ts.... suoritetaan ainakin kerran. Huomaa, että silmukasta tullaan ulos kun ehto pätee; tämän vuoksi C++-vastineessa on ehdon edessä!. while Silmukkarakenne while ehto do... endwhile toimii kuten C++:n while( ehto ){...}. Taulukko 1: Kreikkalaiset kirjaimet englanniksi suomeksi englanniksi suomeksi A α alpha alfa N ν nu nyy B β beta beeta Ξ ξ xi ksii Γ γ gamma gamma O o omicron omikron δ delta delta Π π pi pii E ǫ ε epsilon epsilon P ρ rho rhoo Z ζ zeta zeeta Σ σ ς sigma sigma H η eta eeta T τ tau tau Θ θ ϑ theta theeta Y υ upsilon ypsilon I ι iota ioota Φ φ ϕ phi phi K κ κ kappa kappa X χ chi khii Λ λ lambda lambda Ψ ψ psi psii M µ mu myy Ω ω omega oomega

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 9 Muista, että muuttujien oletusarvoalue on Z. Tehtäväryhmä 1 Jos tehtävänä on ratkaista yhtälö, niin tulos pitää sieventää ja ilmaista logiikan kaavana. Pelkkä vastaus ei riitä, vaan myös välivaiheet on esitettävä. 1. Olkoon h(x) = x 2 ax. (a) Sievennä h(a+1) (b) Ratkaise a:n suhteen h(x+1) = 0 (c) Laske h(1 2a), kun a = 2 (d) Ratkaise a:n suhteen h(a/x) = 0 2. Olkoon h(x) = 1 x 2. (a) Sievennä h((a 1)(a+1)) (b) Sievennä h(1) h(x), kun x = 2 (c) Ratkaise x:n suhteen h(h(x)) = 0 (d) Sievennä h(a) 2 h(a 2 ) 3. Olkoon f(x) = x+y +1 ja g(y) = y 2 +x (a) Sievennä f(f(x)) (b) Sievennä f(f(y)) (c) Sievennä g(f(x)) (d) Sievennä f(g(y)) 4. Olkoon P(i,n) 1 < i n 1 i < n (a) Sievennä P(i,2) (b) Sievennä P(i,n) (c) Sievennä P(n i,n) (d) Sievennä P(n 2,n) 5. Olkoon P(i,n) kuten kohdassa 4 ja Q(i,n) 1 < i n 1 i < n (a) Sievennä Q(i, 3) (b) Sievennä Q(i, 2) (c) Sievennä Q(i, n) (d) Sievennä P(i,n) Q(i,n)

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 10 6. Taulukko A[1,...,n] on ns. keko, josa[ i ] A[i] aina, kun2 i n. Oheinen algoritmi 2 järjestelee taulukon A[1,..., n] uudelleen niin, että lopputulos on keko. 1 for i := n downto 1 do 2 2 j := i; x := A[i]; 3 repeat 4 vanha := j; j = 2; 5 if j < n and A[j +1] > A[j] then j += 1 endif; 6 if j n and A[j] > x then A[vanha] := A[j] endif 7 until j > n or A[j] x; 8 A[vanha] := x 9 endfor C++:n taulukot indeksoidaan nollasta (n 1):een eikä yhdestä n:ään. Muuta algoritmia siten, että se sopii C++:n taulukoille. Vihje: (1) lisää ensin jokaiseen taulukon indeksointiin 1 tyyliin A[e] A[e 1]. Sitten (2) korvaa juoksutusmuuttuja i joka paikassa lausekkeella i + 1, lisää tarvittaessa sulut, siis (i + 1). Tee vastaavasti muuttujille j ja vanha. Lopuksi (3) sievennä lausekkeet siellä missä mahdollista; esimerkiksi muuta A[(i + 1) 1] muotoon A[i]. (Korvauksen i i+1 tavoitteena oli tehdä tämä nimenomainen, ymmärtämistä helpottava sievennys mahdolliseksi.) Huomaa: voit aivan hyvin tilapäisesti kirjoittaa i+1 := n, kunhan sen jälkeen sievennät i:n paljaaksi vähentämällä molemmilta puolilta ykkösen. Huomaa myös, että tällöin 2 joudut vähentämään ykkösen vielä yhdestä kohdasta mistä? Sijoituksen j + 1 = 2 sieventämiseksi korvaa se operaattoria := käyttävällä sijoituksella. Kannattaa myös hyödyntää sitä, että kokonaisluvuilla x < y tarkoittaa samaa kuin x y 1: se sallii tehdä sievennyksiä tyyliin j +1 n j < n. Valmistaudu esittämään taululla vaiheet (1) (3).

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 11 Tehtäväryhmä 2 Tehtävät tulee ratkaista käyttämättä totuustauluja. Propositiologiikka 7. (a) Sievennä (a b) a (b) Sievennä a b a b c (c) Osoita P Q P Q (d) Osoita P Q (P Q) (e) osoita (P Q) (R S) (P S) Q R. 8. (a) Sievennä (a b) (a b c) (b) Sievennä a b a b (c) Osoita ((P Q) P) P (d) Osoita ((P Q) Q) (P Q) (e) osoita (P Q) (P R) P (Q R) 9. (a) Sievennä a b a b (b) Sievennä (a b) (b a) (c) Osoita P (P Q) P Q (d) Osoita Q (Q R) (R P) P (e) Osoita P (P Q) (P (Q R)) R 10. Mitkä seuraavista väittämistä pätevät? (a) P Q R P R (b) P Q R P R (c) P Q R P R (d) P Q R P R

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 12 11. Propositiologiikassa kaava on konjunktiivisessa normaalimuodossa jos ja vain jos se on muotoa φ 1 φ 2 φ n, missä jokainen φ i on klausuuli. Klausuuli on kaava muotoa ξ 1 ξ 2 ξ m, jossa kaikille j {1,...,m} pätee ξ j on muotoa b tai b, missä b on propositiosymboli. Mitkä seuraavista kaavoista ovat konjunktiivisessa normaalimuodossa ja jos jokin kaava ei ole, niin kerro miksi se ei ole. (a) (P Q) R (b) (P Q R) ( P R) (c) (a b c) (b b) (d) A B (e) A B (f) (P Q R) ( P Q) (g) sataa tuulee paistaa tuulee sataa paistaa (h) (x 1 x 2 x 3 ) (x 3 x 2 x 4 ) ( x 1 x 3 x 4 ) Sievennä seuraavat kaavat konjunktiiviseen normaalimuotoon (i) P Q R (j) P Q Q R (k) P Q R 12. Olkoot A[1...n] ja B[1...m] taulukoita. Taulukon (tai sen osan) pituus on sen alkioiden lukumäärä. Voit käyttää samassa tehtävässä määrittelemiäsi predikaatteja, jos annat niille nimet ja sopivat parametrit. Voit myös määritellä muita apupredikaatteja ja -käsitteitä. Kaikkien predikaattien ja käsitteiden tulee olla määriteltyjä kaikilla parametrien arvoyhdistelmillä. Kirjoita predikaatit, jotka määrittelevät seuraavat asiat (a) A:ssa on alkio x ja kaikki A:n alkiot ovat samoja. (b) A:n jokainen alkio, ensimmäistä lukuunottamatta, on vähintään luvun kaksi (2) suurempi kuin edellinen alkio. (c) B:n sisältö on muuten sama kuin A:n, mutta päinvastaisessa järjestyksessä. (d) Taulukko B on A:n osa.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 13 Tehtäväryhmä 3 Tämän tehtäväryhmän tehtävät puhuvat taulukoista A[1...n] ja B[1...m]. Taulukon (tai sen osan) pituus on sen alkioiden lukumäärä. Voit käyttää samassa tehtävässä määrittelemiäsi predikaatteja, jos annat niille nimet ja sopivat parametrit. Voit myös määritellä muita apupredikaatteja ja -käsitteitä. Kaikkien predikaattien ja käsitteiden tulee olla määriteltyjä kaikilla parametrien arvoyhdistelmillä. Huolehdi siis, ettet jaa nollalla tai indeksoi ohi taulukon rajojen. Kiinnitä erityistä huomiota tilanteisiin, missä tauluukko tai sen osa on tyhjä. Lisäksi: Merkintä A[a...y] tarkoittaa taulukkoa, jonka indeksialue on a,a+1,...,y ja y a 1. 13. Kirjoita predikaatit, jotka määrittelevät seuraavat asiat (a) A:ssa on ainakin yksi alkio, joka on ainakin kerran B:ssä. (b) A:ssa on ainakin yksi alkio, joka on tasan kerran B:ssä. (c) A:ssa on tasan yksi alkio, joka on ainakin kerran B:ssä. (d) A:ssa on tasan yksi alkio, joka on tasan kerran B:ssä. 14. Kirjoita predikaatit, jotka määrittelevät seuraavat asiat. Anna niille nimet ja parametrit. (a) Al(A[1... n], i, j): A:n alkiot välillä i... j ovat aidosti laskevassa järjestyksessä. (b) A:ssa on k:n mittainen aidosti laskeva osa. (c) A:ssa on tasan yksi vähintään k:n mittainen aidosti laskeva osa. (d) A:ssa on k:n mittainen aidosti laskeva osa, mutta B:ssä ei ole. 15. Kirjoita predikaatit, jotka määrittelevät seuraavat asiat. Anna niille nimet ja parametrit. (a) A:n alkiot välillä i... j ovat nousevassa järjestyksessä. (b) A:n alkiot välillä i... j ovat laskevassa järjestyksessä. (c) Määrittelemme, että taulukon osa on kupera jos ja vain jos siinä on alkio, jota edeltävä osa (ko. alkio mukaan lukien) on vähintään kahden mittainen ja nouseva, sekä sitä seuraava osa (ko. alkio mukaan lukien) on vähintään kahden mittainen ja laskeva. Kirjoita predikaatti kupera(a[1...n],i,j), joka kertoo, onko A[i...j] kupera. Anna lisäksi esimerkki pienimmästä mahdollisesta kuperasta taulukosta. (d) A:ssa on kupera osa, mutta B:ssä ei ole. 16. Oleta, että (x = 1 x = n+1) ja osoita, että A[x] avain (x = 1 A[x 1] < avain) x = n+1 A[x 1] < avain (x = n+1 A[x] avain) (x = 1 A[x 1] < avain). Vihje: korvaa jokainen vertailu nimellä, esimerkiksi A[x] avain P.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 14 17. Ovatko seuraavat tilapredikaatit oikein? 1 x := 1 2 { x = 1 } 3 while x 0 do 4 { x = 1 } x = 2 { x > 1 } 5 endwhile 6 { x = 0 } 7 { x = 5 } 18. Olkoot p ja q propositiosymboleita. Piirrä kuva, jossa lausekkeet ovat solmuja ja lausekkeiden välillä on nuoli, jos edellinen implikoi seuraavan. Käytä mahdollisimman vähän nuolia eli jos lauseke P implikoi lausekkeen Q, joka puolestaan implikoi lausekkeen R, niin piirrä nuolet vain P:stä Q:hun ja Q:sta R:ään, mutta älä piirrä nuolta P:stä R:ään. Esimerkiksi lausekkeista True, False, p ja p muodostuu tällainen kuva: False p p True (a) Lausekkeet ovat True, False,p,q, p, q,p q,q p ja p q (b) Lausekkeet ovat True, False,p,q, p, q,p q,p q, p q, p q ja p q (c) Lausekkeet ovat True, False,p,q,p q,p q,p q,q p ja p q (d) Olkoot a,b Z ja lausekkeet a = a, b b, a = b, a b, a > b, a b, a < b ja a b.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 15 Tehtäväryhmä 4 Voit käyttää tehtävissä samassa tehtävässä määriteltyjä predikaatteja ja käsitteitä. Kaikkien tehtävissä pyydettyjen predikaattien ja käsitteiden tulee olla määriteltyjä kaikilla parametriensa arvoyhdistelmillä. Voit myös määritellä apupredikaatteja sekä -käsitteitä. Niiden osalta riittää, että ne ovat määritellyt kaikilla niille välitettyjen parametrien arvoilla. Lisäksi: Merkintä A[a...y] tarkoittaa taulukkoa, jonka indeksialue on a,a+1,...,y ja y a 1. 19. Kirjassa Gries, Schneider: A Logical Approach to Discrete Math otettiin käyttöön merkintä ( x : X R : E ) tarkoittamaan: käydään läpi kaikki X-tyyppiset oliot x joille R pätee, lasketaan kullekin E ja yhdistetään tulokset :llä. Alussa saa antaa useampiakin muuttujia kuin yhden, saman tyypin saa antaa monille muuttujille (esim. x : X, y,z : Y ), ja tyypit saa jättää pois, jos ne ovat asiayhteydestä selvät. R:n saa jättää pois, jos se on True. Laske (näytä ainakin yksi välivaihe) mitä on (a) (+i 0 i < 4 : i 8) (b) ( i : {0,1,2} i+(i+1)) Esitä seuraavat ko. merkinnällä: (c) i,j ; 1 i j n : A[i] > 2A[j]. (d) i;1 i n : A[i] = x j ;1 j n : i j A[j] A[i]. (e) ( i I Ai j I B ) j. (f) Mitä ominaisuuksia on tarpeen (tai ainakin viisasta) vaatia operaattorilta? Riittää, jos keksit yhdenkin. Vihje: kokeile sen paikalle vähennyslaskua. (g) Mikä on lausekkeen ( x False : x ) arvo (tai on hyvä valinta sen arvoksi), kun on +,,, tai? Entä jos on? 20. Olkoon A[1... n] taulukko. Täydennä seuraavat kaavat niin, että ne palauttavat False, jos indeksoidaan taulukon rajojen ohi. Muussa tapauksessa niiden pitää palauttaa sama arvo kuin alunperinkin. Sievennä vastauksesi. (a) 0 < A[i] < n (b) A[i+2]+i = A[2i 3] (c) 2 < A[i] A[A[i]+1] > A[i+1] Täydennä seuraava kaava niin, että se palauttaa True, jos indeksoidaan taulukon rajojen ohi. Muussa tapauksessa sen pitää palauttaa sama arvo kuin alunperinkin. (d) A[i 1] = A[n i 1]

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 16 21. On annettu taulukot A[1...n] ja B[1...n]. Tutki, päteekö seuraavien lausekkeiden välillä täsmälleen,, vai ei mikään niistä, tapauksilla n = 0, n = 1 ja n 2. Kirjoita vastauksesi taulukkoon, jossa riveinä ovat kohdat, sarakkeina n:n eri vaihtoehdot ja soluissa vastauksesi. Saatuasi kaikki kohdat ja n:n vaihtoehdot tutkittua, lisää vielä yksi sarake n 0 ja tee vastaava tutkimus sillekin. (a) i;1 i n : A[i] B[i] ja i;1 i n : A[i] < B[i]. (b) i;1 i n : A[i] B[i] ja i;1 i n : A[i] B[i]. (c) i;1 i n : A[i] B[i] ja i;1 i n : A[i] < B[i]. (d) i;1 i n : A[i] < B[i] ja i;1 i n : A[i] B[i]. 22. On annettu taulukot A[1...n] ja B[1...m]. Kirjoita predikaatit, jotka määrittelevät seuraavat asiat. Anna niille nimet ja parametrit. (a) ET(A[1...n],i,j): Taulukon A osa A[i...j] on epätasainen jos ja vain sen peräkkäiset alkiot eroavat vähintään arvon kaksi (2) verran toisistaan. Tyhjä tai yhden alkion mittainen osa ei ole epätasainen. (b) p on A:n pisimmän epätasaisen osan pituus. (c) A:ssa on pidempi epätasainen osa kuin B:n pisin epätasainen osa on. (d) A:ssa on k kappaletta pisimpiä epätasaisia osia (ne ovat siis keskenään yhtäpitkiä). 23. (a) Olkoon A[1... n] taulukko. Määrittele predikaatti x on jaollinen kaikilla taulukon A alkioilla. Anna predikaatille nimi ja parametrit. (b) Osoita poistamalla ; kvanttoreista x; η : ϕ x; η : ϕ. (c) Osoita i : j : i+j = ij. (d) Osoita P x : Q(x) x : P Q(x). (e) Anna esimerkki tilanteesta, jossa y : x : ϕ x : y : ϕ ei päde. (f) Anna esimerkki tilanteesta, jossa x : y : ϕ x : y : ϕ ei päde. 24. Sievennä seuraavat kaavat, kun n = 0, 1, 2. Esitä tulokset taulukossa, jossa sarakkeina ovat n:n arvot, riveillä tehtävän kohdat ja soluissa kyseisen kaavan sievennetty muoto. (a) i;1 i n : P(i) P(n) ( ) (b) i;1 i n : P(i) P(n) (c) i;1 i n : P(i) P(n) ( ) (d) i;1 i n : P(i) P(n) (e) i;1 i n : P(i) P(n) ( ) (f) i;1 i n : P(i) P(n) (g) i;1 i n : P(i) P(n) ( ) (h) i;1 i n : P(i) P(n)

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 17 Tehtäväryhmä 5 25. Pätevätkö seuraavat kaavat? Joko osoita joukko-opin loogisten kaavojen avulla tai anna vastaesimerkki. Huomaa, että koska universumia ei ole annettu, et voi käyttää komplementtikaavoja. (a) A (A B) = A (b) A B = B (B A) (c) (A B) C = (A C) (B C) (d) (A B) C = (A C) (B C) 26. Taulukon yhtenäistä osaa, jonka kaikki alkiot ovat samoja, sanotaan laakioksi. Määrittele seuraavat käsitteet. Anna niille nimet ja sopivat parametrit. Käytä hyväksesi tässä tehtävässä määrittelemiäsi predikaatteja. Kaikkien pyydettyjen kaavojen tulee olla määriteltyjä kaikkien parametriensä arvoyhdistelmillä. (a) Määrittele predikaatti, joka kertoo, onko taulukon A[1...n] kohdasta j alkaen l:n verran perättäisiä alkioita samoja. (b) Määrittele predikaatti, joka kertoo, onko taulukossa A[1... n] l:n pituista laakiota. (c) Määrittele predikaatti, joka kertoo, onko p taulukon A[1... n] pisimmän laakion pituus. (d) Taulukon A[1...n] laakio A[i...j] on maksimaalinen, jos sitä ei voi laajentaa pidemmäksi laakioksi. Taulukon A[1... 6] = [0, 3, 3, 3, 2, 2] maksimaaliset laakiot ovat A[1...1], A[2...4] ja A[5...6]. Määrittele predikaatti maksimaalinenlaakio(a[1...n],i,l), joka tarkoittaa, että A[i...i+l 1] on A[1...n]:n maksimaalinen laakio. (e) Määrittele funktio, joka palauttaa taulukon A[1... n] maksimaalisten laakioiden lukumäärän. 27. On annettu aliohjelmat bool P( int x ) ja bool Q( int x, int y ), jotka palauttavat true jos ja vain jos predikaatit P(x) ja Q(x,y) pätevät. Myös on annettu funktio int f( int x ), joka laskee funktion f(x). Oletetaan, että x {0,...,n 1} ja y {0,..., n 1}. Saat tehdä seuraavat ohjelmat joko C++:lla tai pseudokoodilla. (a) Tee ohjelma, joka tulostaa joukon { x P(x) } alkiot suuruusjärjestyksessä. (b) Tee ohjelma, joka tulostaa joukon { (x, y) Q(x, y) } alkiot jossain järjestyksessä. (c) Tee ohjelma, joka tulostaa joukon { f(x) P(x) } alkiot jossain järjestyksessä. Ei haittaa, vaikka sama alkio tulostettaisiin monta kertaa. (d) Olkoon A = { x P(x) } ja B = { x y : Q(x,y) }. Tee ohjelma, joka tulostaa joukon A B alkiot suuruusjärjestyksessä.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 18 28. A ja B ovat äärellisiä joukkoja. Perustele vastauksesi. (a) Miksi {x 1,x 2,...,x n } n eikä... = n? (b) Millä n:n arvoilla varmasti {x 1,x 2,...,x n } = n? (c) Ilmaise A B lukujen A, B ja A B avulla. (d) Olkoon A B. Mitä pätee luvuille A ja B. Entä paljonko ovat A B, A B, A B, B A ja A B? (e) Kirjoita auki joukot {,{a},a } { } 2 ja 2,{a},a (f) Mitä on A 2 2 A? Vastaako (e)-kohdan vastauksesi tätä tulosta? (g) Paljonko ovat A n ja 2 A? Vastaako (e)-kohdan vastauksesi tätä tulosta? 29. Joukoille käytetään usein seuraavan tapaisia merkintöjä: {x P(x)}, {x A P(x)} ja {f(x) P(x)}. (a) Griesin ja Schneiderin kirjassa käytetään joukoille merkintää { x : X R : E } (katso tehtävä 19). Esitä ym. joukot sillä. X, R ja E ovat kuten tehtävässä 19. (b) Miten ym. joukot ja (a)-kohdan merkintätapa voidaan esittää tehtävän 19 merkinnällä? (c) Miten joukot {x A P(x)}, {f(x) P(x)} ja { x : X R : E } voidaan esittää merkinnällä {x P(x)}? Anna vastauksesi taulukkona, jossa riviotsikkoina ovat esitettävät joukot, sarakotsikkoina kohdat (a), (b) ja (c) sekä soluissa ko. vastauksesi. 30. Kirjoita auki joukot: (a) {2} 2 (b) 2 {2} (c) {2 2 } (d) {2 22 } (e) {(2 2 ) 2 } (f) {2 2 } 2 (g) {2} 22 (h) ({2} 2 ) 2 (i) 2 {22 } (j) 2 {2}2 (k) (2 {2})2 (l) 2 2{2}

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 19 Tehtäväryhmä 6 31. Määrittele seuraavat joukot. Esitä jaollisuus mod :in avulla. (a) Joukon alkiot ovat alkuluvut, ts. ne ovat arvoltaan vähintään 2 ja jaollisia vain 1:llä ja itsellään. (b) Joukon alkiot ovat joukosta A poimittujen kahden eri alkion summat. (c) Joukon A i alkiot ovat lukupareja. Parin ensimmäinen luku on positiivinen ja pienempi kuin parin toinen luku, joka on pariton ja pienempi kuin i. (d) Olkoon a,b,c,x C. Joukon alkiot ovat yhtälön ax 4 +bx 2 +c = 0 kaikki juuret. (e) Olkoon a,b,c,x R. Joukon alkiot ovat yhtälön a 1 x 2 +a 2 x+a 3 = 0 reaalijuurten joukot, kun kertoimet a 1, a 2 ja a 3 valitaan joukosta {a,b,c}. Huomaa, että pyydetyn joukon alkiot ovat joukkoja. Tämän kohdan vastauksesi ei tarvitse olla täysin oikein. 32. On annettu lausekkeet: A1: i;1 i n : A[i] = x, E1: i;1 i n : A[i] = x, A2: i;1 i < n : A[i] = x, E2: i;1 i < n : A[i] = x, A3: i;1 i n : A[i] x, E3: i;1 i n : A[i] x, A4: i;1 i n : A[i] < x, E4: i;1 i n : A[i] < x. Piirrä lausekkeista True, False,A1,A2,A3,A4,E1,E2,E3 ja E4 tehtävän 18 mukainen kuva eli lausekkeet ovat solmuja, joiden välissä on minimimäärä nuolia, jotka kuvaavat lausekkeiden väliset implikaatio-suhteet. Piirrä kuvat seuraavista tapauksista: (a) n 2, (b) n 1 ja (c) n 0. Tee ainakin kohta (a). 33. Kirjoita tilapredikaatit, jotka määrittelevät seuraavat asiat. (a) yksijanolla(a[1...n],b[1...m]): A:ssa on tasan yksi yhden suuruinen alkio ja B:ssä ei ole tasan yhtä nollan suuruista alkiota. (b) summalkm(a[1...n],a,b[1...m],b): B:ssä on alkiota b yhtä monta kappaletta kuin A:n alkioiden a yhteenlaskettu summa on. Tässä tehtävän kohdassa nollan (0) alkion summa on määritelty arvoltaan nollaksi (0). (c) anagrammi(a[1...n],b[1...m]): B:ssä on täsmälleen samat alkiot kuin A:ssa, mutta eri järjestyksessä. Anna esimerkki pienimmästä mahdollisesta anagrammista. (d) samatsummat(a[1... n]): A:n parittomissa indekseissä olevien alkioiden summa on sama kuin parillisissa alkioissa olevien alkioiden summa. Tässä tehtävän kohdassa nollan (0) alkion summaa ei ole määritelty.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 20 34. Täytä { }:t ohjelman toimintaa mahdollisimman hyvin kuvaavilla tilapredikaateilla. (a) 1 { x = 0 } 2 { x := x+1 } 3 4 { x := x y } 5 (b) A[1...n] on kiinteä. 1 { n 1 } 2 i := 1; S := 0; 3 { 1 = i n S = 0 = i 1 j=1 A[j] } 4 while { i n do } 5 6 S := S +A[i]; 7 { 1 i n S = i j=1 A[j] } 8 { i := i+1; } 9 10 end { while 11 12 { S = n j=1 A[j] } S = i 1 j=1 A[j] } (c) On määritelty Q(A[1...n]): i,j ;1 i < j n : A[i] A[j]. Kerro sanallisesti, mitä Q tarkoittaa. x on kiinteä 1 { n 0 Q(A[1...n]) } 2 A[n+1] := x; i := 1; 3 { 1 i n+1 Q(A[1...n]) A[n+1] = x j ;1 j < i : A[j] x } 4 while { A[i] x do } 5 6 { i := i+1; } 7 8 end while; 9 { 1 i n+1 Q(A[1...n]) A[n+1] = x A[i] = x j ;1 j < i : A[j] x } 10 if i = n+1 then 11 { 1 i = n+1 Q(A[1...n+1]) A[i] = x j ;1 j < i : A[j] x } 12 n { := n+1; } 13 14 end { if; } 15 16 { Q(A[1...n]) i;1 i n : A[i] = x }

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 21 35. Tunnista seuraavista ohjelmista ja spesifikaatioista kiinteät muuttujat, tavalliset muuttujat, syötemuuttujat, tulosmuuttujat, apumuuttujat, haamumuuttujat, sidotut muuttujat ja vapaat muuttujat. Annan vastauksesi taulukkona, missä riveinä ovat muuttujien luokittelut, sarakkeina osatehtävät ja soluissa sarakkeen mukaisen osatehtävän rivin luokittelua vastaavat muuttujat. Huomaa, että vapaista ja sidotuista muuttujista puhutaan kaavakohtaisesti. (a) 1 { x = x 0 y = y 0 } 2 t := x; x := y; y := t 3 { x = y 0 y = x 0 } (b) 1 { i; 1 i n 1 : A[i] A[i+1] } 2 a := 1; y := n+1 3 while a < y do 4 v := a+y 2 5 if A[v] < avain then a := v+1 else y := v endif 6 endwhile 7 { (a = n+1 A[a] avain) (a = 1 A[a 1] < avain) } (c) 1 { i; 1 i n : A[i] = A 0 [i] } 2 for i := 2 to n do A[i] += A[i 1] endfor 3 { i; 1 i n : A[i] = i j=1 A 0[j] } (d) A[1...n] on kiinteä. 1 { j;1 j n : A[j] = x } 2 i := 1 3 while A[i] x do 4 { 1 i < n ( j ;1 j i : A[j] x) j ;i < j n : A[j] = x } 5 i := i+1 6 end while 7 { 1 i n ( j ;1 j < i : A[j] x) x = A[i] } 36. Laita seuraavat spesifikaatiot järjestykseen niin, että heikompi on ennen vahvempaa. Vertaa tehtävään 18. 1. muuttuja x on kiinteä, { P } ohj { Q } 2. muuttuja x on tavallinen, { P x = x 0 } ohj { Q x = x 0 } 3. muuttuja x on kiinteä, P ohj Q 4. muuttuja x on tavallinen, P x = x 0 ohj Q x = x 0

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 22 Tehtäväryhmä 7 37. On annettu seuraavat spesifikaatiot: 1. { True } ohj { x = 0 } 2. { False } ohj { x = 0 } 3. True ohj x = 0 4. False ohj x = 0 5. { True } ohj { True } 6. { True } ohj { False } 7. True ohj True 8. True ohj False (a) Mitä nämä spesifikaatiot vaativat ohjelmalta? (b) Laita nämä spesifikaatiot järjestykseen niin, että heikompi on ennen vahvempaa. Vertaa tehtäviin 18 ja 36. 38. Harjoitellaan spesifikaation kirjoittamista. (a) Anna spesifikaatio eli alkuehto ja loppuehto ohjelmalle, joka hakee taulukosta alkion, jonka luvataan olevan taulukossa. Kuten seuraavasta kohdasta ilmenee, sinun tulee päättää, kuinka ohjelma palauttaa tulokset eli etsittävän alkion. (b) Kuinka spesifikaatiosta näkyy kuinka ohjelma palauttaa tulokset? (c) Kuinka ohjelman tulee käyttäytyä, jos alkio ei ole taulukossa? (d) Entä jos se on siellä monta kertaa? 39. Selosta alla määriteltyjen käsitteiden intuitiivinen merkitys, ja anna niille uudet, kuvaavammat nimet. Käsitteet liittyvät suunnattuun graafiin (V,E). (a) A V on lupsahdus, jos ja vain jos u A : v A : u v v u ja u A : v V A : (u v) (v u) (b) Lupsahdus A on öhrööttinen, jos ja vain jos (c) Lupsahdus A on pinkeä, jos ja vain jos u A : v V : (u,v) E v A u A : v A : (u,v) E (d) Piirrä esimerkki 1. pinkeästä öhrööttisestä 2. pinkeästä epäöhrööttisestä 3. epäpinkeästä öhrööttisestä 4. epäpinkeästä epäöhrööttisestä lupsahduksesta, jos sellainen on olemassa.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 23 40. Olkoon G = (V, E) suunnattu graafi. Seuraava operaatio tuottaa muuten samanlaisen graafin, mutta jossa on jokin uusi solmu ja tästä uudesta solmusta on kaari kaikkiin muihin solmuihin: lisää(g) := (V,E ), missä V = V {v}, v / V ja E = E ({v} V). Määrittele seuraavat operaatiot tai käsitteet. Anna niille lyhyt nimi ja parametrit. (a) Operaatio, joka lisää suunnattuun graafiin solmun v ja kaaret siten, että v:stä sekä kaikista niistä solmuista, joista ei lähtenyt kaaria, lähtee nyt kaari solmuun v. (b) Operaatio, joka ottaa parametreikseen suunnatun graafin ja joukon W solmuja (jotka eivät välttämättä ole ko. graafin solmuja) ja poistaa graafista kaaria siten, että W:hen kuuluvista solmuista lähtee kaaria vain W:hen kuuluviin solmuihin ja niistä solmuista, jotka eivät kuulu W:hen, lähtee kaaria vain niihin solmuihin, jotka eivät kuulu W:hen. Muuten alkuperäiset kaaret säilyvät. (c) Predikaatti, joka kertoo, onko annettu suunnattu graafi melkein kaksiosainen siten, että sen solmut jakautuvat kahteen erilliseen joukkoon, niin että muita kaaria kuin paikallissilmukoita ei ole saman joukon solmujen välillä. 41. Piirrä lausekepuut. Tulkitse kvanttorit operaattoreiksi, pelkkä kaksoispistenotaatio ottaa kaksi parametria ja puolipistenotaatio kolme parametria. r on funktio, joka ottaa parametrikseen merkkijonon ja palauttaa merkkijonon. (a) 1 x x x 1 (b) r(αβ) = r(β)r(α). (c) for i := k 1 to n+k 1 do if A[i] 0 then A[i] := A[i 1]+1 else A[i] := 0 endif endfor (d) i : 1 i i n A[i] = x j ;1 j j n j i : A[j] A[i] 42. Olkoon Σ joukko merkkejä, a Σ ja α,β,γ Σ. Lisäksi on annettu kaavat: ε on tyhjä merkkijono, jolle pätee (1) εα = α ja (2) αε = α. Merkkijonoille pätee liitännäisyys eli (3) (αβ)γ = α(βγ). Määritellään funktio reverse r : Σ Σ seuraavasti: (4) r(ε) = ε ja (5) r(αa) = ar(α). Nyt voidaan osoittaa (6) r(a) = a seuraavasti: r(a) 1 = r(εa) 5 = ar(ε) 4 = aε 2 = a. Osoita käyttäen kaavoja (1)-(6) ja induktio-oletusta (io), että (7) r(αβ) = r(β)r(α). Merkitse käyttämäsi kaava tai induktio-oletus =-merkin yläpuolelle yo. esimerkin mukaisesti. IP: r(αε)? =...? = r(ε)r(α). IO: r(αβ) = r(β)r(α), missä β 0. IA: r(α(βa))? =...

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 24 Tehtäväryhmä 8 43. Oletetaan tehtävän 42 käsitteet ja kaavat annetuiksi. (Voit siis tehdä tämän tehtävän, vaikka et olisikaan ratkaissut tehtävää 42.) Annetaan vielä kaavat (8) α 0 = ε, (9) α k = α k 1 α ja (10) α k = αα k 1, kun k 0. Osoita käyttäen kaavoja (1)-(10) ja tämän tehtävän induktio-oletusta, että (11) r(α n ) = r(α) n, kun n 0. IP: IO: IA: 44. Anna spesifikaatiot seuraaville tehtäville. (a) Etsi suurimman alkion paikka taulukossa A[1... n]. (b) Aseta x:lle taulukon A[1... n] suurin arvo. (c) Etsi ensimmäinen paikka, jossa on taulukon A[1... n] suurin alkio. (d) Viimeisen kohdan, jossa taulukossa A[1... n] on suurin arvo, arvoksi asetetaan x. 45. Piirrä lausekkeen 4 + 3 2 + 1 lausekepuu ja laske sen arvo, kun + on infix-operaattori ja sekä prefix- että infix-operaattori, mutta infix-operaattoreille pätee (a) + ja sitovat yhtä voimakkaasti (b) + sitoo voimakkaammin kuin (c) sitoo voimakkaammin kuin + (d) Tee kohdat (a) (c) myös lausekkeeelle 4 +(3 2) + 1. 46. On annettu oheinen DFA D. D c b q 0 a q 1 b q 2 c q 3 c q 4 a b (a) Luettele D:n Q, Σ, δ, ˆq ja F. δ lienee kätevintä ilmaista taulukkona, jonka rivejä indeksoivat tilat ja sarakkeita aakkoset. (b) Päteekö ε L(D)? (c) Entä cc L(D)? (d) Mikä on lyhin D:n hyväksymä merkkijono, jossa ei ole merkkiä c? (e) Voiko D hyväksyä merkkijonon, jossa on kaksi a:ta peräkkäin? (f) Voiko D hyväksyä merkkijonon, jossa on kaksi b:ta peräkkäin, mutta ei kolmea b:tä? Muista perustella vastauksesi.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 25 47. Mitkä seuraavista kohdista eivät ole säännöllisiä lausekkeita? Esitä ne säännöllisinä lausekkeina ja piirrä DFA:t, jotka hyväksyvät kyseiset kielet. (a) abbac (b) (a b) 2 b (b c) (c) (a c ) 2 bc 3 a (d) a + b c + (e) a + (a b c) b (f) (a + ) + 48. Paljonko on seuraavien säännöllisten lausekkeiden tai niitä vastaavien säännöllisten lausekkeiden pituudet. Anna lisäksi merkkijonon r pituudelle alaraja ja yläraja, kun se kuuluu ko. kohtien määrittelemiin kieliin. (a) a (b) a 0 (c) ε (d) a aa aaa (e) aa (f) a + (g) (a a) + b + (h) a(a b) 5 (i) (a(ab c) 3 ) 2

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 26 Tehtäväryhmä 9 49. Piirrä DFA:t, jotka hyväksyvät seuraavat kielet sekä kirjoita kohtia (a), (b) ja (c) vastaavat säännölliset lausekkeet. Tarpeettomia etunollia ei hyväksytä. (a) parittomat luonnolliset luvut 2-järjestelmässä, (b) 4:llä jaolliset luonnolliset luvut 2-järjestelmässä, (c) parilliset luonnolliset luvut 10-järjestelmässä ja (d) kolmella jaolliset luonnolliset luvut 10-järjestelmässä. 50. Muodosta seuraaville DFA:ille vastaavan kielen määrittelevät säännölliset lausekkeet vaiheittain niinkuin prujussa luvussa 5.4 Epädeterministiset äärelliset automaatit neuvotaan. Valmistaudu näyttämään taululla nämä vaiheet. D 1 a D 2 a D 3 a b a a b b a b 51. Määrittele operaatio nlc, joka poistaa DFA:sta mahdollisimman monta tilaa siten, että hyväksytty kieli ei muutu. Voit olettaa, että DFA:ssa ei ole saavuttamattomia tiloja. Mitä operaatiosi tekee, jos lopputilojen joukko on tyhjä? Muista tarkistaa, että lopputulos on DFA. 52. Piirrä DFA:t, jotka hyväksyvat seuraavat kielet (a) (0 1) 101100. Kerro sanallisesti kielen intuitiivinen merkitys. (b) Jossain kohdin syötettä on merkkijono 101100. (c) Syötteessä ei ole merkkijonoa 101100. (d) Merkkijono 101100 esiintyy syötteessä tasan kerran. 53. Piirrä pienin DFA, joka hyväksyy saman kielen kuin tehtävän 46 DFA. Tee minimointi algoritmilla. 54. Piirrä DFA:t D 1 ja D 2 siten, että kummassakin on ainakin yksi saavuttamaton tila, [[D 1 ]]:ssä on ainakin yksi saavuttamaton tila, ja [[D 2 ]]:ssa ei ole saavuttamattomia tiloja.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 27 Tehtäväryhmä 10 55. Olkoon Σ = {1,2,...,n}. (a) Piirrä mahdollisimman pieni DFA D 5, jolle L(D n ) = {12 n} (nyt 123 ei tarkoita satakaksikymmentäkolme, vaan jonoa 1, 2, 3 ). (b) Piirrä compl(d 5 ). (c) Osoita, ettei compl(d 5 ):ia voi pienentää. (d) Vertaa D n :n ja compl(d n ):n solmujen määriä. Vertaa myös kaarten määriä. 56. (a) Laske prujun luvussa 5.3. DFA:n operaatioita loppuosassa olevan päänsärkyesimerkin ensimmäisen ja neljännen automaatin tulo (= ne, joiden aakkostoon särky kuuluu eli sivun 176 viimeinen ja sivun 177 kolme ensimmäistä), ja poista siitä turhat tilat ja tilasiirtymät. (b) Lisää tuloon loput kaksi automaattia miten helpoiten onnistut, ja poista lopputuloksesta turhat tilat ja tilasiirtymät. Onko tulos sama kuin prujussa? 57. Luonnollinen luku 10-järjestelmässä on neljällä jaollinen, jos ja vain jos se on 0, 4 tai 8, jos viimeinen numero on 0, 4 tai 8, ja edellinen on parillinen, tai viimeinen numero on 2 tai 6, ja edellinen on pariton. (a) Tee säännöllinen lauseke, joka hyväksyy neljällä jaolliset luonnolliset luvut (b) Muodosta NFA, joka hyväksyy täsmälleen (a)-kohdan kielen Tämä NFA on helppo muodostaa esimerkiksi niin, että alkutilasta haaraudutaan siten, että hyväksytään erikseen yhden merkin mittaiset hyväksyttävät syötteet ja ε:lla haaraudutaan tutkimaan pidemmät syötteet. (c) Determisoi (b)-kohdan NFA käyttäen prujun determisointialgoritmia (d) Minimoi (c)-kohdan algoritmi käyttäen prujun minimointialgoritmia 58. (a) Tee NFA, joka hyväksyy kielen (12) ((2 11)(21) (1 22)(12) ). (b) Determisoi tekemäsi NFA käyttäen prujun algoritmia. (c) Minimoi näin saamasi DFA käyttäen prujun algoritmia. 59. OlkootN 1 jan 2 NFA:ita, joilla ei ole yhteisiä tiloja. Näiden avulla on määritelty seuraavat kielet. (a) { αβ α L(N1 ) β L(N 2 ) } (b) L(N 1 ) (c) (L(N 1 ) L(N 2 ) (d) L(N 1 ) L(N 2 ) (e) (L(N 1 ) L(N 2 )) Jokaisessa kohdassa kerro sanallisesti, mitä nämä määritelmät tarkoittavat, ja suunnittele yksinkertainen ja tehokas algoritmi, joka tuottaa NFA:n, jonka hyväksymä kieli on ko. kohdassa määritelty kieli. Käytä hyväksesi temppua, joka ei toimi DFA:lle. Riittää, että hahmotat algoritmiesi toiminnan piirroksilla.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 28 60. (a) Piirrä äärellinen automaatti (saa olla epädeterministinen), jonka hyväksymä kieli on kuvan äärellisen automaatin hyväksymät merkkijonot takaperin. Vinkki: automaatin tulee siis toimia takaperin. a a c b a (b) Määrittele operaatio Takaperin, joka tekee (a)-kohdan muunnoksen. Operaatio Takaperin ottaa siis parametrikseen NFA:n ja tuottaa NFA:n, jonka hyväksymä kieli on alkuperäisen NFA:n hyväksymät merkkijonot takaperin. Tuottaahan se (a)- kohtaan saman vastauksen kuin itse sait.

OHJ-2100 laskuharjoituksia 24. toukokuuta 2013 29 Tehtäväryhmä 11 61. Määrittele operaatio uusi(n, id), joka nimeää uudelleen NFA:n N tilat ja tilasiirtymät, niin, että tilasta q tulee pari (q, id) ja L(uusi(N, id)) = L(N). Tarkista, että operaation tulos on NFA. 62. Olkoon Σ aakkosto. Tee BNF ++ -määritelmä kielelle, joka koostuu vähintään yhdestä virkkeestä. Virke koostuu vähintään yhdestä lauseesta, joiden välissä on pilkku, ja päättyy pisteeseen.. Lause koostuu vähintään yhdestä sanasta, joiden välissä on vähintään yksi välilyönti. Sana voi olla luku tai merkkijono. Luku koostuu vähintään yhdestä numerosta 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Merkkijonon alussa ja lopussa on yksinkertainen lainausmerkki eli hipsu, ja välissä nolla tai useampi dekoodattu merkki. Dekoodattu merkki on joko \\ (dekoodattu pakomerkki), \ (dekoodattu hipsu) tai tavallinen merkki. Tavallinen merkki kuuluu joukkoon Σ {, \ }. Jokaisen, paitsi viimeisen, virkkeen lopettavan pisteen ja jokaisen lauseen lopettavan pilkun jälkeen on oltava vähintään yksi välilyönti. 63. Anna BNF ++ -määritelmät seuraaville kielille, kun Σ = {a,b,c}. (a) Tee BNF ++ -määritelmä kielelle palindromit, joiden pituus on parillinen. Palindromi tarkoittaa merkkijonoa, joka on sama luettuna etuperin ja takaperin. (b) Tee BNF ++ -määritelmä kielelle palindromit. (c) { α joka toinen α:n merkki on a }, (d) Taulukon alkioon viittaaminen kurssin pseudokoodissa, esimerkiksi A[1, 2x]. Oleta välisymbolien Taulukko (taulukon nimi) ja Lauseke olevan annetut. (e) Kvanttorin käyttö predikaattilogiikassa, esimerkiksi i;1 i < n : A[i] = 0, i,j;i j : i j = i+j tai i : 1 i < n A[i] = 0. Oleta välisymbolien Muuttuja ja Ehto olevan annetut. 64. Anna BNF ++ -määritelmät seuraaville kielille, kun Σ = {a,b,c}. (a) { α α on sulkulauseke, missä a on sulut auki, b on sulut kiinni, c ei esiinny ja jossa alku- ja loppusulut täsmäävät }. Esimerkiksi suluilla ilmaistuina (), ()() ja (()()())((())()) kuuluvat tähän kieleen. (b) { α jokainen α:n alkuosa sisältää ainakin yhtä paljon a-kirjaimia kuin b-kirjaimia } (merkkijonon a 1 a 2 a n alkuosa on mikä tahansa merkkijonon alusta erotettu osajono eli a 1 a 2 a k, missä k n). (c) { α α:ssa on tasan kaksi kertaa niin monta a-kirjainta kuin siinä on b-kirjaimia }. 65. Anna BNF ++ -määritelmät kielille { a 1 a 2 a n {a,b} ϕ(a 1 a 2 a n ) }, missä ϕ(a 1 a 2 a n ) on (a) n 2 a 2 = a, (b) { i 1 i n ai = b } mod 2 = 0 (c) i;1 i n : a i = b ( j;1 j < i : a j = a) j;1 j i : a j = a n+1 j, (d) i;1 i < n : a i+1 a i.