Demo7 Ratkaisut
Transcription
Demo7 Ratkaisut
Johdatus diskreettiin matematiikkaan Harjoitus 7, 28.10.2015 1. Onko olemassa yhtenäistä verkkoa, jossa (a) jokaisen kärjen aste on 6, (b) jokaisen kärjen aste on 5, ja paperille piirrettynä sivut eivät leikkaa toisiaan (paitsi kärjissä). Ratkaisu. (a) Täydellinen seitsemän kärjen verkko on 6-säännöllinen, ja toki myös olemassa. (b) Esimerkiksi icosahedron piirrettynä tasoon on tällainen (siis venytetään yksi tahko auki ympäröimään muita, ja muut tämän sisään.) Tässä kannattaa huomata että sellaista verkkoa, jossa jokaisen kärjen aste on vähintään 6, ei voi piirtää tasoon ilman että jotkut sivut leikkaavat toisiaan (Voidaan todistaa, että tasoverkossa matalimman kärjen aste on oltava alle 6, tämä on osa 5-värilauseen todistusta). 0 1 8 7 2 9 10 3 11 6 4 5 2. Keksi yhtenäinen verkko, jolla (a) on Eulerin kävely ja Hamiltonin kierros, (b) on Eulerin kävely, mutta ei Hamiltonin kierrosta, (c) ei ole Eulerin kävelyä, mutta on Hamiltonin kierros, (d) ei ole Eulerin kävelyä eikä Hamiltonin kierrosta. Ratkaisu. Alla piirrettynä halutut verkot: 2 Kuva 1. Järjestyksessä (a), (b), (c), (d) 3. Osoita, että yhtenäinen verkko (V, E), jolla |E| = |V | − 1 on puu. Ratkaisu. Koska puu on yhtenäinen verkko, jossa ei ole epätriviaaleja kierroksia, riittää todistaa seuraava väittämä: Jos yhtenäisessä verkossa (V, E) on epätriviaali kierros, niin |E| ≥ |V |. Oletetaan että verkko (V, E) on yhtenäinen ja että (v, v1 , · · · vk , v) on tämän verkon epätriviaali kierros. Olkoon E1 = E \ {{vk , v}}. Myös aliverkko (V, E1 ) on yhtenäinen, sillä jokaisessa askelen {vk , v} sisältävässä kävelyssä kyseinen askel voidaan korvata kulkemalla (vk , · · · , v1 , v). Jos (V, E1 ) on puu, niin asetetaan E 0 = E1 . Muutoin aliverkossa (V, E1 ) on epätriviaali kierros ja vastaavasti löytyy E2 ⊂ E1 siten, että |E2 | = |E1 | − 1 ja (V, E2 ) on yhtenäinen. Jatketaan sivujen poistoja niin kauan kuin mahdollista. Lopulta päädytään yhtenäiseen aliverkkoon (V, E 0 ), jossa ei ole epätriviaaleja kierroksia. Koska (V, E 0 ) on puu, niin |E 0 | = |V | − 1. Siten |E| ≥ |E 0 | + 1 = |V |. 4. Osoita, että jos puussa on vähintään kaksi kärkeä, niin ainakin kahden kärjen aste on yksi. Ratkaisu. Olkoon (V, E) puu siten että |V | ≥ 2. Puun yhtenäisyyden perusteella δ(v) ≥ 1. Lisäksi |V | − |E| = 1, koska (V, E) on puu. Sisältäköön V1 ⊂ V ne kärjet joiden aste on 1. Nyt X X X X 2|E| = δ(v) = δ(v) + δ(v) = |V1 | + δ(v), v∈V v∈V1 v∈V \V1 v∈V \V1 joten |V1 | ≥ 2(|V | − |E|) = 2 eli 1-asteisia kärkiä on vähintään kaksi. Toinen todistus: Induktio kärkien lukumäärän suhteen käyttämällä Lausetta 4.14. 5. Määritä kaikki puut, joilla on (a) Eulerin kävely, (b) Hamiltonin kierros 3 Ratkaisu. (a) Voidaan olettaa että puussa on vähintään kaksi kärkeä. Tehtävän 4 ja Lauseen 4.11 nojalla puulla on Eulerin kävely täsmälleen silloin kun yksiasteisia kärkiä on täsmälleen kaksi. Osoitetaan, että tämä on yhtäpitävää sen kanssa, että puun jokaisen kärjen aste on korkeintaan kaksi. Siten puulla on Eulerin kävely täsmälleen silloin, kun puussa kahden kärjen aste on yksi ja muiden kärkien aste on kaksi, ts. kun puu voidaan esittää “suorana viivana”. Oletetaan ensin että yksiasteisia kärkiä on kolme, v, w, u. Lauseen ?? mukaan puun kärjestä toiseen on olemassa täsmälleen yksi polku. Olkoon siis P yksikäsitteinen polku kärjestä v kärkeen w. Huomaa, että u ei yksiasteisena kärkenä voi sisältyä polkuun P . Olkoon z kärjestä u kärkeen v kulkevan yksikäsitteisen polun ensimmäinen kärki joka sisältyy myös polkuun P . Tällöin z on myös ensimmäinen polkuun P kuuluva kärki joka tulee vastaan kun kuljetaan yksikäsitteistä polkua kärjestä u kärkeen w (sillä muutoin syntyisi epätriviaali kierros). Siten kärjen z aste on vähintään 3. Oletetaan sitten että on olemassa kärki z, jonka aste on kolme. Poistamalla yksi kärkeen z liittyvistä sivuista {z, v} syntyy kaksi puuta. Kärjen z sisältämässä komponentissa on edellisen tehtävän nojalla vähintään kaksi yksiasteista kärkeä. Jos kärjen v sisältämässä komponentissa on vain yksi kärki, niin se on alkuperaisessä verkossa yksiasteinen ja siis alkuperäisessä verkossa vähintään kolme yksiasteista kärkeä. Jos taas v:n sisältämässä komponentissa on vähintään kaksi kärkeä, on taas edellisen tehtävän nojalla siinä vähintään kaksi yksiasteista kärkeä. Koska vain toinen näistä voi olla v täytyy alkuperäisessä verkossa olla vähintään kolme yksiasteista kärkeä. (b) Puulla ei ole Hamiltonin kierrosta, koska sillä ei määritelmän mukaan ole mitään ei-triviaalia kierrosta. 6. Olkoon (V, E) verkko, jossa ei ole epätriviaaleja kierroksia. Osoita, että |E| = |V | − k missä k on verkon (V, E) komponenttien lukumäärä. Ratkaisu. Koska verkossa (V, E) ei ole epätriviaaleja kierroksia, sen jokainen komponentti on puu. Jos verkon (V, E) komponentit ovat (V1 , E1 ), · · · , (V, Ek ), on siis Pk voimassa |Ei | = |Vi | − 1 kaikilla i ∈ {1, · · · , k}. Toisaalta |V | = i=1 |Vi | ja Pk |E| = i=1 |Ei |, joten |E| = k X i=1 |Ei | = k X i=1 k X (|Vi | − 1) = ( |Vi |) − k = |V | − k. i=1 4 7. Turnaus (engl. Tournament) on suunnattu verkko siten, että kaikkien kärkien u 6= v välillä on täsmälleen jompi kumpi nuolista (u, v) tai (v, u). Todista, että turnauksessa on olemassa polku joka kulkee jokaisen kärjen kautta (täsmälleen) kerran. Ratkaisu. Todistetaan väite induktiolla kärkien lukumäärän suhteen. Selvästi väite on totta kun |V | = 2. Tehdään sitten induktio-oletus, että on olemassa n ∈ N siten että väite pätee kaikille suunnatuille verkoille joille |V | ≤ n. Olkoon nyt (V, D) suunnattu verkko, jolle |V | = n + 1. Valitaan mielivaltainen kärki v ∈ V , ja merkitään siihen liittyviä nuolia Dv = {d ∈ D : d = (v, w) tai d = (w, v) jollekin w ∈ v}. Poistamalla v ja siihen liittyvät nuolet saadaan verkko (V \ {v}, D \ Dv ) jonka kärkien lukumäärä on n ja induktio-oletuksen mukaan tällä verkolla on siis haluttu polku, merkitään tätä (v1 , · · · , vn ). Nyt tutkitaan mihin kohtaan tätä polkua kärki v voidaan liittää. Jos (v, v1 ) ∈ D liitetään kärki polun eteen ja homma on selvä. Jos (vn , v) ∈ D liitetään kärki polun loppuun ja homma on taas selvä. Oletetaan sitten että kumpikaan vaihtoehto ei toteudu, jolloin (v1 , v) ∈ D ja (v, vn ) ∈ D, koska kyseessä on turnaus. Olkoon j = min{i : (vi , v) ∈ D ja (v, vi+1 )}. Huomataan, että tällainen löytyy koska muuten myös (vn , v) ∈ D mikä olisi ristiriita. Nyt voidaan siis muodostaa polku (v1 , · · · , vj , v, vj+1,...,vn ) ja väite on todistettu. Johdatus diskreettiin matematiikkaan Harjoitus 7 jatkuu, 28.10.2015 1. Osoita että turnauksessa (kts. Harjoitusten 7 tehtävä) on kärki v johon pääsee enintään kahden mittaisella polulla mistä hyvänsä kärjestä. Ratkaisu. Todistetaan induktiolla kärkien lukumäärän |V | suhteen seuraava väittämä: On olemassa kärki v johon pääsee enintään kahden mittaisella polulla mistä hyvänsä kärjestä JA tähän kärkeen v saapuu vähintään yhtä monta nuolta kuin mitä siitä lähtee (eli | {w ∈ V : ∃(w, v) ∈ D} | ≥ | {w ∈ V : ∃(v, w) ∈ D} |). Selvästi kun |V | = 2 niin verkolla on vain yksi nuoli, ja siihen kärkeen johon nuoli osoittaa, päästään jo yhden mittaisella polulla mistä hyvänsä kärjestä ja yksi on enemmän kuin nolla. Tehdään sitten induktio-oletus: väite pätee kaikilla turnauksilla (V, D) joilla |V | = n, jollakin n ∈ N. Olkoon sitten (V, D) turnaus, jolle |V | = n + 1. Valitaan joku v ∈ V josta lähteviä nuolia on vähintään niin paljon kuin siihen tulevia, siis |{w ∈ V : ∃(v, w) ∈ D}| ≥ n/2. Poistetaan nyt tämä kärki ja siihen liittyvä nuolet ja tarkastellaan jäljelle jäävää verkkoa (V \ {v}, D \ Dv ), missä Dv = {e ∈ D : ∃w ∈ V jolle e = (v, w) tai e = (w, v)}. Tämä on selvästi turnaus, ja sen kärkien lukumäärä on n joten voidaan käyttää induktio-oletusta, on siis olemassa u ∈ V \ {v} johon pääsee enintään kahdella askelella ja johon tulee vähintään niin monta nuolta kuin siitä lähtee. Jälkimmäinen . Jos nyt ei ole osa tarkoittaa eritoten että |{w ∈ V \ {v} : ∃(w, u) ∈ D}| ≥ n−1 2 olemassa nuolta (v, u), niin riittää osoittaa että on olemassa w ∈ V siten että (v, w) ∈ D ja (w, u) ∈ D. Jos tällaista w ∈ V ei olisi olemassa (eikä nuolta (v, u)), olisivat joukot {w ∈ V \ {v} : ∃(w, u) ∈ D} ja {w ∈ V : ∃(v, w) ∈ D} erillisiä jolloin n − 1 = | {w ∈ V \ {u, v}} | ≥ |{w ∈ V \ {v} : ∃(w, u) ∈ D}| + |{w ∈ V : ∃(v, w) ∈ D}| = n−1 n + = n − 1/2. 2 2 mikä on ristiriita. Siis haluttu nuoli on olemassa ja induktioaskel todistettu. ———————————————————Alla olevat koodaustehtävät katsotaan kahta demotehtävää vastaaviksi, joten näistä saa kaikkiaan kuusi tehtävää. Ei ole sallittua käyttää olemassaolevia funktioita jotka suorittavat alla olevat tehtävät, vaan on tarkoitus nimenomaan kirjoittaa itse kurssilla esiintynyt algoritmi koodimuotoon. 2. KOODAUSTEHTÄVÄ: 6 (a) Kirjoita valitsemallasi kielellä Harjoitusten 5, Tehtävässä 7, esitetty rekursiivinen algoritmi Fibonaccin lukujen laskemiseksi. Tehtävän funktion tulee ottaa yksi muuttuja n, ja palauttaa n:s Fibonaccin luku. (b) Kirjoita koodi joka tekee saman asian kuin (a) -kohdassa mutta ei ole rekursiivinen (ts. funktio ei kutsu itseään). Ratkaisu. 3. KOODAUSTEHTÄVÄ: Kirjoita valitsemallasi kielellä Harjoitusten 4, Tehtävässä 2 esitetty mergesort algoritmi joka järjestää annetun listan suuruusjärjestykseen. Tehtävän funktion tulee ottaa sisäänsä lista, ja palauttaa sen järjestettynä. Ratkaisu. 4. KOODAUSTEHTÄVÄ: (a) Kirjoita valitsemallasi kielellä algoritmi joka hakee annetun verkon virittävän puun (siis minkä hyvänsä virittävän puun). Tehtävän funktion tulee ottaa sisäänsä naapurimatriisi ja palauttaa virittävän puun naapurimatriisi. (Vaihtoehtoisesti kelpaa ottaa sisään kärkien naapurilista, ja palauttaa vastaava lista virittävälle puulle) (b) Jos verkon sivuihin olisi liitetty painot/hinnat, osaisitko muuttaa koodiasi niin että se etsisi halvimman virittävän puun? (ei tarvitse koodata, näitä algoritmeja ei käyty läpi kurssilla). Ratkaisu. Ratkaisu.