ISSN 0351-6652 Letnik 17 (1989/1990) Številka 1 Strani 17-21, 48 Janez Žerovnik: PROBLEM BARVANJA TOČK GRAFA Ključne besede: matematika, računalništvo, teorija grafov, barvanje grafa, časovna zahtevnost, algoritem. Elektronska verzija: http://www.presek.si/17/966-Zerovnik.pdf © 1989 Društvo matematikov, fizikov in astronomov Slovenije © 2010 DMFA - založništvo PROBLEM BARVANJA TOČK GRAFA Nekateri problemi v matematiki imajo lepo lastnost: zeio enostavno jih je zastaviti (za razumevanje problema ni potrebno veliko znanja), toda rešitev je vse prej kot enostavna. Verjetno ste že slišali za Fermatov problem. Poglejmo ceioštevilsko enačbo xn +yn = zn Pri izbranem n iščemo cela števila x, y in z, ki ustrezajo enačbi. Pri n = 2 lahko hitro najdemo iskana Števila. To so ravno pitagorejske trojice, na primer* = 3, y = 4, z - 5! Kaj pa lahko rečemo za />jer ki so večji od 2? Znameniti francoski matematik Fermat (1601—1665) je domneval, da obstajajo cele netrivialne rešitve samo pri n = 2, pri n > 2 pa po njegovi domnevi ni nobene netrivialne rešitve, (Trivialne rešitve so tiste, pri katerih je ena od spremenljivk enaka nič, take pa seveda obstajajo pri vsakem n.) Poiskati dokaz ali protidokaz te domneve je slavni Fermatov problem. Od Fermatovih časov do danes je mnogo matematikov poskusilo dokazati ali ovreči domnevo, toda brez popolnega uspeha. Problem očitno ni enostaven! Zanimivo je, da je Fermat zapisal, da je našel dokaz za svojo trditev, ki pa ga ni nikjer objavil. Več o Fermatovem problemu si lahko preberete v knjižici prof. Ivana Vidava Rešeni in nerešeni problemi matematike (Knjižnica Sigma; 1). Problem barvanja točk grafa je mlajši, pa ima vendar kar zanimivo zgodovino. Za razliko od Fermatovega problema tu ni težav z obstojem rešitev; zajec tiči v drugem grmu. Ko namreč želimo poiskati hiter algoritem, ki bo našel barvanje za poljuben graf, se izkaže, da to nikakor ni enostavno. Preden zastavimo problem, navedimo in ponovimo nekaj pojmov iz teorije grafov, ki jih najdemo na primer v presekovi knjižici Najnujnejše o grafih, ki sta jo napisala Drago Baje in Tomaž Pisanski, Graf G = (V, E) je matematični objekt, ki ga podamo z množico točk V in množico povezav (torej parov točk) E. Točki sta sosednji, če med njima poteka povezava. Barvanje grafa je preslikava, ki vsaki točki grafa priredi neko barvo. Za imena barv običajno zaradi enostavnosti vzamemo kar naravna števila. Dobro barvanje je tako, ki sosednje točke pobarva z različnimi barvami. Na primer barvanje na sliki t je dobro barvanje, barvanje na sliki 2 pa ne. Graf je k~pobarvljiv, če obstaja dobro barvanje s k ali manj barvami. Graf iz prejšnjega primera (stika 1 in 2) ni 2-pobarvljiv, je pa 3-pobarvtjiv in seveda 4—, 5—, ... —pobarvljiv, torej Ar—pobarvljiv za vse k > 3. Minimalno število barv, potrebnih za dobro barvanje, imenujemo kromatično Število grafa in ga označimo z xlG). Graf iz prejšnjega primera ima torej kromatično število 3. Zdaj pa naloga: Imamo graf G = (U, E) in naravno število k. Ali je graf G k—pobarvljiv? To je odločitveni problem barvanja točk grafa. Problem ni nerešen, tako kot Fermatov, je pa "težak" na drug način, ki ga bomo poskusili pojasniti v nadaljevanju. V kratki zgodovini teorije zahtevnosti računskih postopkov se je izoblikovala tudi domneva, da obstajajo problemi, za katere obstajajo učinkoviti postopki in taki, za katere učinkovitih postopkov ni mogoče konstruirati. Zvesti bralci Preseka se bodo verjetno spomnili članka Sandija Ktavžarja o časovni kompleksnosti algoritmov v 2. številki letnika 86/87. Natančna definicija učinkovitih postopkov presega okvir tega sestavka, tukaj povejmo le, kaj bi za problem barvanja točk grafa pomenilo, da je algoritem učinkovit. Ko določimo Število k in imamo dan graf G, lahko definiramo obsežnost problema barvanja točk grafa: to naj bo kar število točk grafa, torej n = moč(V). Hitrost algoritma lahko merimo s številom potrebnih korakov. Lahko privzamemo, da smo algoritem zapisali v enem od programskih jezikov {na primer v pascalu, FORTRANu ali BASICu). Korak algoritma je izvedba enega enostavnega ukaza. Na primer vrstica x := y + z * 3 je en (pascalski) korak, del programa for i := 1 to n do for j := 1 to n do begin x[l] s-y[i]; z [ i ] := 2 * y [ i ] end; pa je 2 * n2 korakov. Pogosto nas zanima samo velkostni red, konstantni faktor takrat ni pomemben. Del programa v prejšnjem primeru ima število korakov, ki je kvadratna funkcija n—ja, to pa zapišemo krajše 0(n2) in preberemo veliki o od n kvadrat. Po definiciji je funkcija gin) reda 0(f(n)), če obstaja konstanta C > 0, tako da je g(n) < Cf(n) za vse dovolj velike n. Pri tem fraza "trditev velja za vse dovolj velike n" pomeni, da obstaja naravno Število n', da je za vsak n ^n' trditev veljavna. Pravimo, da je algoritem polinomski, če je njegovo število korakov enako 0(p(n}) za neki polinom p. Polinomski postopki so v teoriji Časovne zahtevnosti ravno učinkoviti postopki. Problem je polinomski, če zanj obstaja polinomski algoritem. Za problem barvanja točk grafa na primer ne poznamo nobenega polinomskega algoritma. Prav tako doslej ni nihče dokazal, da takega algoritma ni mogoče konstruirati. Vsi doslej znani postopki za reševanje problema barvanja točk grafa imajo vsaj eksponentni red potrebnega Števila korakov. (Število korakov je na primer 10*2" ali 10", torej ne obstaja polinom p(n), da bi bilo Število korakov reda 0
xW). Zdaj pa do kazimo izrek: a. Recimo, da je graf 2—pobarljiv in vsebuje kot podgraf kak lihi cikel H. Potem bi bil tudi H kot podgraf G 2-pobarljiv* To pa je v nasprotju s premislekom v nalogi 2, b. Naj bo zdaj G graf, ki vsebuje kakšen lihi cike! H. Iz naloge 2 vemo, da je x(W = 3, Ker je H podgraf grafa G, pa mora biti x(G) > = 3.