Luvut, RSA ja graafit

Samankaltaiset tiedostot
Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )

Lukuteoria. Eukleides Aleksandrialainen (n. 300 eaa)

Johdatus matematiikkaan

Kryptologia Esitelmä

Johdatus matematiikkaan

Testaa taitosi 1: Lauseen totuusarvo

y z = (x, y) Kuva 1: Euklidinen taso R 2

RSA-salakirjoitus. Simo K. Kivelä, Apufunktioita

Salakirjoitusmenetelmiä

Johdatus matematiikkaan

6*. MURTOFUNKTION INTEGROINTI

Algoritmit 2. Luento 13 Ti Timo Männikkö

Kompleksiluvut., 15. kesäkuuta /57

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

10. Painotetut graafit

811120P Diskreetit rakenteet

(d) 29 4 (mod 7) (e) ( ) 49 (mod 10) (f) (mod 9)

1 Peruslaskuvalmiudet

MS-A0402 Diskreetin matematiikan perusteet

1 Kompleksiluvut 1. y z = (x, y) Kuva 1: Euklidinen taso R 2

Matematiikan tukikurssi

(a) Kyllä. Jokainen lähtöjoukon alkio kuvautuu täsmälleen yhteen maalijoukon alkioon.

NELIÖJUURI. Neliöjuuren laskusääntöjä

PERUSASIOITA ALGEBRASTA

1.1 Vektorit. MS-A0007 Matriisilaskenta. 1.1 Vektorit. 1.1 Vektorit. Reaalinen n-ulotteinen avaruus on joukko. x 1. R n. 1. Vektorit ja kompleksiluvut

1 Kompleksiluvut. Kompleksiluvut 10. syyskuuta 2005 sivu 1 / 7

= 3 = 1. Induktioaskel. Induktio-oletus: Tehtävän summakaava pätee jollakin luonnollisella luvulla n 1. Induktioväite: n+1

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 12 Ke Timo Männikkö

MS-A0102 Differentiaali- ja integraalilaskenta 1

z 1+i (a) f (z) = 3z 4 5z 3 + 2z (b) f (z) = z 4z + 1 f (z) = 12z 3 15z 2 + 2

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Johdatus matematiikkaan

Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 6 (8 sivua) OT. 1. a) Määritä seuraavat summat:

LUKUTEORIA johdantoa

Algoritmit 2. Luento 12 To Timo Männikkö

0. perusmääritelmiä. Lukutyypit Laskusäännöt Laskujärjestys

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2018 Insinöörivalinnan matematiikan koe, , Ratkaisut (Sarja A)

Reaaliluvut 1/7 Sisältö ESITIEDOT:

Algoritmit 1. Demot Timo Männikkö

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2

Esimerkki A1. Jaetaan ryhmä G = Z 17 H = 4 = {1, 4, 4 2 = 16 = 1, 4 3 = 4 = 13, 4 4 = 16 = 1}.

jakokulmassa x 4 x 8 x 3x

Matematiikan tukikurssi, kurssikerta 3

1 Määrittelyjä ja aputuloksia

A-osa. Ratkaise kaikki tämän osan tehtävät. Tehtävät arvostellaan pistein 0-6. Taulukkokirjaa saa käyttää apuna, laskinta ei.

Algoritmit 1. Luento 1 Ti Timo Männikkö

A TIETORAKENTEET JA ALGORITMIT

Valitse vain 6 tehtävää! Kaikkiin tehtäviin tarvittavat välivaiheet esille!

Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on

2. Polynomien jakamisesta tekijöihin

Esitetään tehtävälle kaksi hieman erilaista ratkaisua. Ratkaisutapa 1. Lähdetään sieventämään epäyhtälön vasenta puolta:

7.4 Sormenjälkitekniikka

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

1 Lukujen jaollisuudesta

Laskennan vaativuus ja NP-täydelliset ongelmat

Kompleksiluvut 1/6 Sisältö ESITIEDOT: reaaliluvut

Jäännösluokat. Alkupala Aiemmin on tullut sana jäännösluokka vastaan. Tarkastellaan

RSA-salaus ja sen lukuteoreettinen pohja

a) z 1 + z 2, b) z 1 z 2, c) z 1 z 2, d) z 1 z 2 = 4+10i 4 = 10i 5 = 2i. 4 ( 1)

0. perusmääritelmiä. Lukutyypit Laskusäännöt Laskujärjestys

Algoritmit 1. Demot Timo Männikkö

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

RSA-salausmenetelmä LuK-tutkielma Tapani Sipola Op. nro Matemaattisten tieteiden laitos Oulun yliopisto Syksy 2017

Lukujonon raja-arvo 1/7 Sisältö ESITIEDOT: lukujonot

Johdatus verkkoteoriaan 4. luento

Logiikka 1/5 Sisältö ESITIEDOT:

Funktiot ja raja-arvo P, 5op

Matematiikan tukikurssi

Juuri 12 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

Algebran perusteet. 44 ϕ(105) = (105). Näin ollen

811120P Diskreetit rakenteet

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

MATEMATIIKAN KOE, LYHYT OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ

Algoritmit 2. Luento 11 Ti Timo Männikkö

Kuva Suomen päätieverkko 1 Moottoritiet on merkitty karttaan vihreällä, muut valtatiet punaisella ja kantatiet keltaisella värillä.

1. Osoita, että joukon X osajoukoille A ja B on voimassa toinen ns. de Morganin laki (A B) = A B.

Luento 2: Viivan toteutus

0. perusmääritelmiä. Lukutyypit Laskusäännöt Laskujärjestys

Matematiikan tukikurssi

MAT Laaja Matematiikka 1U. Hyviä tenttikysymyksiä T3 Matemaattinen induktio

(iv) Ratkaisu 1. Sovelletaan Eukleideen algoritmia osoittajaan ja nimittäjään. (i) 7 = , 7 6 = = =

Tämän luvun tarkoituksena on antaa perustaidot kompleksiluvuilla laskemiseen sekä niiden geometriseen tulkintaan. { (a, b) a, b œ R }

1. Viikko. K. Tuominen MApu II 1/17 17

Algoritmi on periaatteellisella tasolla seuraava:

Matematiikan tukikurssi

Kysymys: Voidaanko graafi piirtää tasoon niin, että sen viivat eivät risteä muualla kuin pisteiden kohdalla?

Valitse kuusi tehtävää! Kaikki tehtävät ovat 6 pisteen arvoisia.

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A)

Yhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 10: Ensimmäisen kertaluvun differentiaaliyhtälö

Johdatus matemaattiseen päättelyyn

2. Eukleideen algoritmi

7. Olemassaolo ja yksikäsitteisyys Galois n kunta GF(q) = F q, jossa on q alkiota, määriteltiin jäännösluokkarenkaaksi

7.4. Eulerin graafit 1 / 22

HY / Avoin yliopisto Lineaarialgebra ja matriisilaskenta II, kesä 2015 Harjoitus 1 Ratkaisut palautettava viimeistään maanantaina klo

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

RSA Julkisen avaimen salakirjoitusmenetelmä

KOMPLEKSILUVUT C. Rationaaliluvut Q. Irrationaaliluvut

Transkriptio:

Luvut, RSA ja graafit (LTT-12200, 1. luento) Keijo Ruohonen 28.8.2013

LUVUT Insinöörityö pyörii paljolti lukujen ja niillä laskemisen ympärillä. Tämä luonnollisesti tapahtuu käytännössä tietokoneella. Kaikkia peruslukutyyppejä tarvitaan: reaalilukuja (kuten 1.25, 2.0, π, 5,... ), rationaalilukuja (kuten 2 3, 1 2, 85%,... ), kompleksilukuja (kuten i = 1, 2.2 3.1i, e 1.2i,... ) ja kokonaislukuja (kuten 0, 1, 2,... ). Lisäksi tietysti tarvitaan muutakin lukuihin liittyvää: muuttujia (kuten x, y, t,... ), funktioita (kuten sin, cos, ln,... ), matriiseja jne. Osa näistä käsitteistä on tuttuja lukiosta. Tietoja täydennetään ja loput käsitteet esitellään ensimmäisen vuoden peruskursseissa.

LUVUT Yhteen-, vähennys-, kerto- ja jakolaskut eri lukutyypeille ovat tuttuja (laskintavaraa paitsi ehkä kompleksiluvuille). Potenssiin korotus on kuitenkin jo reaaliluvuille mutkallisempi operaatio (kompleksiluvuista puhumattakaan). Sitä ei esimerkiksi voi tehdä käsin laskien.

LUVUT Yhteen-, vähennys-, kerto- ja jakolaskut eri lukutyypeille ovat tuttuja (laskintavaraa paitsi ehkä kompleksiluvuille). Potenssiin korotus on kuitenkin jo reaaliluvuille mutkallisempi operaatio (kompleksiluvuista puhumattakaan). Sitä ei esimerkiksi voi tehdä käsin laskien. Pikku esimerkkinä, uskoisitko äkkiseltään, että 2 2 2 2. = 2, ( = 1.4142), mutta. 1.45 1.451.451.45 =? Nämä ovat ns. äärettömiä tetraatioita ja esiintyvät siellä täällä sovelluksissa liittyen mm. ns. Lambertin funktioihin.

LUVUT Ero on dramaattinen, esimerkiksi ( 31 2 ) = 2 2 2 = 1.999992648, 2 2 mutta 44 1.45 = 10 363462. Tilanteet erottava yläraja on e 1/e ja 2 e 1/e < 1.45 (tässä e = 2.7183 ja e 1/e = 1.4447). Alaraja puolestaan on 1/e e = 0.0660. Nämä ovat tetraatioita eli superpotensseja. Tetra:= proc(n,x) if n=0 then return(1) else return(xˆtetra(n-1,x)) end if; end: Tetra(44,sqrt(2.)); 1.999999934 Tetra(42,1.45); 39.36741954 Tetra(43,1.45); 2.252380945 10 6

LUVUT: RSA Paljon käytetyssä RSA-kryptosysteemissä valitaan ensin satunnaisesti kaksi salaista suurta alkulukua, vaikkapa p = 5057402958792745746451543044643488946225\ 3447083477055613732392200628477467530153\ 0298317835173075361137591320328642844385\ 356753963070558225810912900991 ja q = 1221848516224714891746181347070147736187\ 9812657800627179506670481918563496904479\ 7860330762914249730259047080425104515751\ 600064617268766835958911671763. Hyvä kysymys: Miten?

LUVUT: RSA Alkulukuhan on luku, jota ei voi jakaa tasan kuin vain itsellään ja 1:llä (2, 3, 5, 7, 11, 13, 17, 19, 23, 29,... ). Aukikerrottu tulo n = pq = 6179380301151399300269059239480862733532\ 1532622652902607538916171572943805658118\ 2280588927037179301975750415684923266441\ 2007362226574804331795817306284992562858\ 6168071490061723928966910604726674687259\ 1206923948858044517811204100268083853697\ 1874574012587260380317192952000225734499\ 3179703463909417133 on julkinen. p:n ja q:n salaisuus ei ole silti uhattu, sillä n:stä ei millään tunnetulla menetelmällä saada lasketuksi takaisin sen tekijöitä kohtuullisessa ajassa!

LUVUT: RSA, eksponentit Lisäksi tarvitaan kryptauseksponentti a sekä dekryptauseksponentti b. Ne ovat satunnaisia lukuja väliltä 0,..., n 1, mutta ihan mitkä tahansa valinnat eivät käy. Esimerkiksi luvun ab 1 pitää olla tasan jaollinen luvulla (p 1)(q 1), joten ainakin toinen luvuista on iso (ideaalisesti molemmat). Kun p ja q tiedetään, tällaiset eksponentit löytyvät helposti kokeilemalla (riittää valita yksi, toinen saadaan Eukleideen algoritmilla). Kryptauseksponentti on julkinen ja dekryptauseksponentti salainen. Julkisen tiedon (n ja a) avulla kuka tahansa voi salata eli kryptata viestin, mutta vain salaisen tiedon (p, q ja b) haltija voi sen dekryptata.

LUVUT: RSA, kryptaus ja dekryptaus Jakamalla osiin ja sopivasti koodaamalla (esimerkiksi UTF-8) viesti v voidaan ajatella luvuksi väliltä 0,..., n 1. Vastaava kryptattu viesti on silloin luku s = rem(v a, n), eli jakojäännös, kun luku v a jaetaan luvulla n. (Ts. jos q on osamäärä, niin v a = q n + s ja 0 s < n.) Lähtien pelkästään s:stä ja julkisesta tiedosta ei ole mahdollista saada lasketuksi viestiä v missään kohtuullisessa ajassa. Kryptattu viesti s on nyt myös luku väliltä 0,..., n 1 ja sen dekryptaus sujuu salaista tietoa käyttäen samaan tapaan: v = rem(s b, n).

LUVUT: RSA, pulma no. 1 Hyvinkin suurien lukujen yhteen-, kerto- ja jakolasku (muista ne jakojäännökset!) sujuvat nopeasti tietokoneella vaikkapa ihan koulumenetelmillä (parempiakin tietysti tunnetaan). Potenssiinkorotus on taaskin pulmallisempi. Pulma no. 1 on se, että jos a on hyvin suuri (ja jollei a ole, b on), niin potenssia v a ei voi laskea tyyliin v 2 = v v, v 3 = v v 2, v 4 = v v 3,..., v a = v v a 1 (a 1 kertolaskua). a voi olla vaikkapa suuruusluokkaa 10 100 ja maailmankaikkeuden arvioitu ikä on noin 4.3 10 23 µs eli miljoona kertolaskua sekunnissa ei riitä yhtään mihinkään.

LUVUT: RSA, pulma no. 1 Potenssiinkorotus on toistettua kertolaskua ja kertolasku taas on toistettua yhteenlaskua. Kertolaskua a v ei voi sitäkään tehdä muodossa 2 v = v +v, 3 v = v +2v, 4 v = v +3v,..., a v = v +(a 1)v (a 1 yhteenlaskua), jos a on iso. Käsilaskussa kerrotaankin käyttäen kertojan a desimaaliesitystä. Jos esimerkiksi a = 523, niin kertominen tehdään muodossa 523 v = (5 v) 100 + (2 v) 10 + (3 v). Yhteenlaskuja tarvitaan silloin (a:n pituus) 1. Huomaa, että kertominen 10:llä, 100:lla, 1000:lla jne. on ilmaista.

LUVUT: RSA, pulma no. 1 Ratkaisu potenssiinkorotuksessakin on käyttää a:n desimaaliesitystä (tai binääriesitystä). Otetaan esimerkki, lasketaan v 523 tällä tavalla: v 3 v 10 v 2 10 = (v 10 ) 2 v 100 = (v 10 ) 10 v 5 100 = (v 100 ) 5 v 523 = v 5 100 v 2 10 v 3 yhteensä 2 kertolaskua 4 kertolaskua 1 kertolasku 4 kertolaskua 3 kertolaskua 2 kertolaskua 16 kertolaskua Mutta onko tuo 16 kertolaskua pienin määrä?

LUVUT: RSA, pulma no. 1 Ratkaisu potenssiinkorotuksessakin on käyttää a:n desimaaliesitystä (tai binääriesitystä). Otetaan esimerkki, lasketaan v 523 tällä tavalla: v 3 v 10 v 2 10 = (v 10 ) 2 v 100 = (v 10 ) 10 v 5 100 = (v 100 ) 5 v 523 = v 5 100 v 2 10 v 3 yhteensä 2 kertolaskua 3 kertolaskua 1 kertolasku 3 kertolaskua 3 kertolaskua 2 kertolaskua 14 kertolaskua 1 1 Mutta onko tuo 16 kertolaskua pienin määrä? Ei, helposti näkee kierrättämällä tuloksia, että 14 kertolaskuakin riittää.

LUVUT: RSA, pulma no. 1 Näin menetellen kertolaskujen lukumäärä on verrannollinen eksponentin pituuteen ja pysyy kohtuullisena (< 6 pituus). Mutta saadaanko näin kertolaskujen pienin määrä? Onko esimerkiksi edellä 14 pienin määrä?

LUVUT: RSA, pulma no. 1 Näin menetellen kertolaskujen lukumäärä on verrannollinen eksponentin pituuteen ja pysyy kohtuullisena (< 6 pituus). Mutta saadaanko näin kertolaskujen pienin määrä? Onko esimerkiksi edellä 14 pienin määrä? Ei, pienin määrä on 12: v 2, v 4, v 8, v 16, v 32, v 64, v 65, v 130, v 260, v 261, v 522, v 523

LUVUT: RSA, pulma no. 1 Näin menetellen kertolaskujen lukumäärä on verrannollinen eksponentin pituuteen ja pysyy kohtuullisena (< 6 pituus). Mutta saadaanko näin kertolaskujen pienin määrä? Onko esimerkiksi edellä 14 pienin määrä? Ei, pienin määrä on 12: v 2, v 4, v 8, v 16, v 32, v 64, v 65, v 130, v 260, v 261, v 522, v 523 Näiden pienimpien kertolaskumäärien (eli yhteenlaskuketjujen) laskemiseksi suurille luvuille ei tunneta nopeaa menetelmää. Mutta onneksi sellaista ei tarvitakaan, eo. desimaaliesitysmenetelmä riittää aivan mainiosti.

LUVUT: RSA, pulma no. 1 Näin menetellen kertolaskujen lukumäärä on verrannollinen eksponentin pituuteen ja pysyy kohtuullisena (< 6 pituus). Mutta saadaanko näin kertolaskujen pienin määrä? Onko esimerkiksi edellä 14 pienin määrä? Ei, pienin määrä on 12: v 2, v 4, v 8, v 16, v 32, v 64, v 65, v 130, v 260, v 261, v 522, v 523 Näiden pienimpien kertolaskumäärien (eli yhteenlaskuketjujen) laskemiseksi suurille luvuille ei tunneta nopeaa menetelmää. Mutta onneksi sellaista ei tarvitakaan, eo. desimaaliesitysmenetelmä riittää aivan mainiosti. Asiaan liittyy outoja juttuja. Esimerkiksi eksponenteille 2 191 ja 191 pienin määrä on sama (11). Eksponentille 2 375494703 määrä (34) on jopa pienempi kuin eksponentille 375494703 (35).

LUVUT: RSA, pulma no. 2 Pulma no. 2 on, että jos eksponentti a on suuri, niin v a on vielä aivan valtavan paljon suurempi. Otetaan esimerkkitapaus, jossa v = 11 1 (100 ykköstä) ja a on suuruusluokkaa 10 100.

LUVUT: RSA, pulma no. 2 Pulma no. 2 on, että jos eksponentti a on suuri, niin v a on vielä aivan valtavan paljon suurempi. Otetaan esimerkkitapaus, jossa v = 11 1 (100 ykköstä) ja a on suuruusluokkaa 10 100. Silloin v a :n pituus on suuruusluokkaa 10 102. (Joidenkin arvioiden mukaan tunnetun maailmankaikkeuden alkeishiukkasten määrä on luokkaa 10 97 eli luvulle v a ei ole maailmankaikkeudessa muistilaa.)

LUVUT: RSA, pulma no. 2 Pulma no. 2 on, että jos eksponentti a on suuri, niin v a on vielä aivan valtavan paljon suurempi. Otetaan esimerkkitapaus, jossa v = 11 1 (100 ykköstä) ja a on suuruusluokkaa 10 100. Silloin v a :n pituus on suuruusluokkaa 10 102. (Joidenkin arvioiden mukaan tunnetun maailmankaikkeuden alkeishiukkasten määrä on luokkaa 10 97 eli luvulle v a ei ole maailmankaikkeudessa muistitilaa.) Ratkaisu tähän on, että jakojäännöksillä on oma kertolaskulakinsa: Tulon jakojäännös on tulontekijöiden jakojäännösten tulon jakojäännös. Eli kaavamuodossa rem(x y, n) = rem ( rem(x, n) rem(y, n), n ).

LUVUT: RSA, pulma no. 2 Kun potenssilaskussa kryptauksessa ja dekryptauksessa sovelletaan esitettyä nopeaa menettelyä ja koko ajan redusoidaan tulokset jakojäännöksiksi, ei koskaan tarvitse kertoa muita kuin välillä 0,..., n 1 olevia lukuja eikä koskaan tarvitse jakaa n:llä kuin enintään (n 1) 2 :n suuruisia lukuja. Kun vielä otetaan käyttöön menetelmä, jolla niitä suuria alkulukuja voidaan generoida nopeasti suuria määriä, niin RSA:n toteutus ja käyttö tulee mahdolliseksi. Nimi RSA tulee keksijöidensä nimistä: Ronald Rivest, Adi Shamir ja Leonard Adleman. Tosin menetelmä keksittiin jo vähän aikaisemmin vuonna 1973 Britannian sotilastutkimuskeskuksessa. Keksijät olivat Clifford Cocks ja James Ellis. Asia salattiin ja tuli julki vasta 1997 (kuukautta ennen Ellis kuoli). Myös Yhdysvalloissa NSA yritti ensin salata julkisen avaimen kryptauksen.

GRAAFIT Kaikki matemaattinen ja laskuissa ja mallinnuksessa tarvittava ei liity lukuihin. Esimerkiksi graafit ovat tällaisia. Graafi muodostuu pisteistä (eli solmuista), esimerkiksi a, b, c, d, e, f, ja niitä mahdollisista yhdistävistä viivoista (eli kaarista). Viivat annetaan pistepareina, esimerkiksi pari (b, d) tarkoittaa, että pisteitä b ja d yhdistää viiva. Esimerkkigraafiin otetaan viivat (a, b), (a, c), (a, d), (b, d), (b, c), (c, d), (c, e), jolloin se voidaan havainnollistaa piirtämällä:

GRAAFIT: Piirtäminen b c d e f a

GRAAFIT: Mallinnus Graafi voidaan luonnollisesti piirtää loputtoman monilla eri tavoilla. Isojen graafien piirtäminen niin, että kuvasta saa jotain irti, on toisaalta taitolaji. Graafeilla mallinnettavia tilanteita on myös loputtoman monta, esimerkiksi: Ihmiset: a tuntee b:n, c ei tunne e:tä jne. Navigointi: paikkakunnat ja niiden väliset tieyhteydet Kemia: atomit ja niiden väliset sidokset Virtapiirit: johtimet, komponentit ja liitokset Tietokoneohjelmat: käskyt, haarautumiset Biotekniikka: neuroniverkot Matematiikka: matriisien tulkitseminen graafeiksi Graafiteoria on lisäksi hyvin suosittu matematiikan tutkimusalue.

GRAAFIT: Mallinnus Tehtävän ratkaisu graafeihin siirtymällä sujuu oheiseen tapaan. Erilaisia graafialgoritmeja on valmiina suuri määrä. Tehtävien matemaattinen mallinnus ja ratkaisu on yleensäkin tällainen, mutta graafeilla mallinnusvaihe on usein hyvinkin helppo. Probleema Graafiratkaisu Ratkaisu Mallinnus Graafiprobleema Ratkaisu valmiilla graafialgoritmilla Palautus

GRAAFIT: TSP (Travelling Salesman Problem) Kaikkia helpon näköisiäkään graafitehtäviä ei tätä nykyä voida yleisesti ratkaista nopeasti. Eräs tällainen on Kauppamatkustajan probleema (TSP): Onko olemassa tapaa kulkea graafin pisteet viivoja pitkin edeten siten, että jokaisessa pisteessä käydään kerran ja palataan sitten lähtöpisteeseen. Lisäksi voidaan antaa viivoille pituudet ja vaatia, että reitti olisi lyhin mahdollinen. Ei tunneta menetelmää, jolla TSP voitaisiin aina ratkaista nopeasti, monissa erikoistapauksissa kylläkin. Jos tällainen menetelmä löytyy tai näytetään, ettei sellaista ole, ratkeaa samalla kuuluisa P = NP -probleema ja ratkaisija saa Clay Instituten Millennium-palkinnon (1000000 $).

GRAAFIT: TSP Joitakin Kauppamatkustajan probleemoita voidaan ratkaista suurillekin pistemäärille. Ohessa on lyhin reitti linnuntietä Suomen kaikkien 10639 taajaman (pisteet) kautta. Sen pituus on 520527 km. TSP:llä on monia sovelluksia tekniikassa (robotiikassa, elektroniikassa, aikataulutuksessa jne.). Etsitty Concorde-ohjelmistolla 2009. Lähtödata: NGA GEOnet Names Server.

GRAAFIT: TSP Mitä tehdä TSP:lle, joka ei ratkea nopeasti? Joidenkin arvioiden mukaan noin 200 pistettä menisi vielä rutiininomaisesti. Jos kysymys on nimenomaan lyhimmän tai yleensä lyhyen reitin etsimisestä (ja reittejä on ilman muuta tiedossa), niin on menetelmiä, jotka etsivät lyhimmästä tietyn suhteellisen virheen (esimerkiksi neljäsosan) päässä olevan reitin, suurella todennäköisyydellä hyvän (lyhyen) reitin, tietyllä (pienellä) todennäköisyydellä lyhimmän reitin, (suurella todennäköisyydellä) jotain hyödyllistä tietoa lyhimmästä reitistä (esimerkiksi hyvän alarajan pituudelle), jonkin kombinaation edellisistä.

GRAAFIT: Neliväriprobleema Graafin värittäminen tarkoittaa, että pisteille annetaan väri eikä minkään viivan päätepisteillä saa olla samaa väriä. Esimerkiksi edellä ollut graafi voidaan värittää neljällä värillä, mutta ei kolmella. Kuuluisa Nelivärilause sanoo, että jos graafi voidaan piirtää ilman, että viivat leikkaavat (kuten esimerkkigraafi voidaan), niin se voidaan myös värittää neljällä värillä. Lause pätee myös valtiokarttojen värittämiseen neljällä värillä (pallonpinnalla). b e c f a d Lauseen tunnettu todistus on erittäin mutkikas ja vaatii pitkät tietokoneajot, josta syystä kaikki matemaatikot eivät vieläkään sitä hyväksy!