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.