Archive for the ‘Lietas ko droši vien atklāju pēdējais’ Category

Grafu izomorfisms

Tuesday, May 6th, 2008

Es visu laiku izklaidējos! Vismaz tā jūs noteikti domājat, ņemot vērā mana bloga saturu :)

Manos plānos ir kaut kad uzrakstīt, kas ir kvantu skaitļošana, tas ir, ar ko tad es īsti nodarbojos. Bet ne šoreiz, jo es joprojām nezinu vieglu veidu, kā to paskaidrot. Tomēr tagad es aprakstīšu vienu konkrētu problēmu, kuras atrisinājumam es kaut kā cenšos tuvoties. Lielas ticības tam gan nav, jo, kā teica mans profesors, ja es to atrisinu, es varu vienkārši izvēlēties jebkuru pasaules universitāti un kļūt par profesoru tajā :D Tomēr, jebkurš solis atrisinājuma virzienā (vai arī apzināšanās, kas nedod vēlamo rezultātu) varētu būt noderīgs.

Mērķis: atrast efektīvu algoritmu priekš grafu izomorfisma. Tā kā tas varētu izklausīties pilnīgi nesaprotami, es mēģināšu paskaidrot, ko tas īsti nozīmē.

Grafs ir matemātiska abstrakcija priekš situācijas, kad ir kaut kādi objekti (saukti par virsotnēm), no kuriem katrs pāris ir vai nav savā starpā savienots (ar kaut ko sauktu par šķautni). Piemēram

  • virsotnes var apzīmēt pilsētas, un divas virsotnes ir savienotas ar šķautni, ja starp attiecīgajām pilsētām ir ceļš;
  • vai, piemēram, virsotnes ir pilsētas ar lidostām, un divas virsotnes ir savienotas ar šķautni, ja starp attiecīgajām pilsētām ir avioreiss;
  • virsotnes var apzīmēt portāla draugiem.lv lietotājus, un divas virsotnes ir savienotas, ja attiecīgie lietotāji ir “draugi”.

Grafus ir ērti attēlot grafiski. Piemēram, šis ir grafs:

iso0.jpg

Kā jau var nojaust, grafiem ir ļoti daudz pielietojumu.

Tātad, kas ir izomorfisms? Iedomājieties, ka mēs paņemam kādu konkrētu virsotni, un tad to “bīdām” kaut kur apkārt, bet visas ar to saistītās šķautnes saglabājās (tā kā tās būtu piesietas šai virsotnei). Divi grafi ir izomorfi, ja mēs varam no viena grafa iegūt otru kaut kā pārbīdot tā virsotnes. Piemēram, grafi

iso1.jpg

ir izomorfi, jo sekojošās pārbīdes pārveido pirmo par otro.

iso2.jpg

Savukārt grafi

iso3.jpg

nav izomorfi. Tas ir tādēļ, ka pirmajam grafam katrai virsotnei eksistē divi “kaimiņi”, kuri ir arī savstarpēji kaimiņi, bet otrajam grafam tas tā nav, un nekādas virsotņu pārbīdes šo īpašību nemaina.

Mūsu mērķis ir atrast algoritmu (darbības priekš datora), kas spēj noteikt vai divi grafi ir izomorfi vai nav, pie tam, var to izdarīt “pietiekami” ātri. Šāda algoritma atrašana būtu pārāk augsts mērķis priekš manis (varbūt kādu dien :D), tāpēc es mēģināju risināt šķietami vieglāku problēmu.

Datora atmiņā grafi parasti netiek uztverti kā grafiskas bildes, bet, piemēram, kā tabulas. Tādēļ ir ļoti ērti kaut kā sanumurēt virsotnes. Divi šādi grafi ar vienādu virsotņu skaitu ir izomorfi, ja eksistē tāds saraksts, kuru virsotni par kuru jāpārbīda, lai no pirmā grafa iegūtu otro. Šķiet, ka tikko rakstīto varētu būt vieglāk saprast ar piemēru. Zemāk dotie grafi ir izomorfi, jo no pirmā grafa var iegūt otro ar pārbīdi 1->6 (virsotni 1 pārbīdām uz vietu 6), 2->3, 3->2, 4->1, 5->5, 6->4:

iso4.jpg

Mans uzdevums: uztaisīt efektīvu algoritmu, kurš, saņemot divus grafus un konkrētu sarakstu, kas apraksta kaut kādu pārbīdi, noskaidro, vai atkārtojot šo pārbīdi pēc patikas daudz reižu, mēs varam no pirmā grafa iegūt otro. Piemēram, pieņemsim, ka mums ir atkal doti tie paši tikko minētie grafi, un pārbīde 1->4, 2->3, 3->2, 4->6, 5->5, 6->1 . Atkārtojot šo pārbīdi piecas reizes, mēs patiesībā iegūstam jau minēto pārbīdi 1->6, 2->3, 3->2, 4->1, 5->5, 6->4, ar kuras palīdzību no pirmā grafa mēs dabūjām otro:

iso5.jpg

Sākumā lielākā daļa mēģinājumu uztaisīt šādu algoritmu man bija neveiksmīgi, bet, mēģinot to darīt, vismaz kaut ko jaunu iemācījos. Pirms divām nedēļām, svētdienā, mēs plānojām braukt kāpt klintīs pie Niagāras upes. Sestdienas vakarā čammājoties, sanāca vēlu iet gulēt, bet nākamajā rītā taču agri jāceļas. Guļot gultā un domājot visādas lietas, īsti nesanāca aizmigt. Tad nu es izdomāju, ka jāmēģina domāt kaut kas garlaicīgāks, lai aizmigtu (un tas bieži nostrādā). Sāku domāt par savu pētījumu problēmu :D Bet kā izrādījās tā vietā, lai aizmigtu, pēc divām stundām ap pusčetriem naktī problēma bija atrisināta :)

Tiesa, atrisinājums, manuprāt, ir samērā vienkāršs. Tad nu ir visdrīzāk ir viens no diviem variantiem: vai nu tas ir jau izdarīts iepriekš, vai arī neviens par šādu problēmu iepriekš nav interesējies. Tā kā manam profesoram ir daudz kontaktu, tad nu viņš mēģinās noskaidrot. Un vispār šķiet, ka mans profesors ir vairāk iepriecināts par manu sniegumu līdz šim, kā es pats. Man šķiet, ka man jādara vairāk.

P.S. Tas, ka algoritms strādā pietiekami ātri (jeb efektīvi), nozīmē, ka tas strādā polinomiālā laikā (no grafa virsotņu skaita). Bet es diemžēl atturēšos šeit skaidrot ko tas īsti nozīmē.

Pavasaris

Tuesday, April 8th, 2008

Biedzot es varu redzēt zāli! Kaut gan lielākoties dzeltenu, bet tomēr zāli.

Beidzot svētdienās 10:30 vakarā Universitātē joprojām muž no cilvēkiem! Sesija ir sākusies!

Joprojām 6:00, ejot uz pārtikas veikalu, man ir jāstāv divu, nevis divdesmit, cilvēku garā rindā!

Supermena logo

Tuesday, March 25th, 2008

Toronto klubs man atgādināja par vienu mūzikas video. Lai gan šīs dziesmas vārdus intelekta ziņā es novērtētu ar 2 no 10 (un, labojot studentu darbus, es esmu sapratis, ka esmu visai dāsns), video man izraisīja sekojošu jautājumu: Vai Supermena logo ir aizsargāts ar autortiesībām? Iekš dziesmas video tas tiek aizmiglots.

Perfektcionisms un robežas

Tuesday, March 4th, 2008

Šajā semestrī mācos tikai vienu priekšmetu, un tāpēc cenšos tajā būt cik labs vien iespējams. Pie tam, tas ir tiešām priekšmets, kas mani interesē un kurā man patīk, kā pasniedzējs stāsta. Bet tie mājasdarbi ir vienkārši mokoši. Mums kopā ir trīs mājasdarbi, no kuriem tikko pabeidzu otro. Mājasdarbs sastāv no pieciem uzdevumiem, no kuriem daži ir tādi, kurus mēģināju atrisināt kādas trīs dienas.

Rīt (otrdien) man tas ir jānodod, bet joprojām neesmu atrisinājis otro uzdevumu. Tā kā pasniedzēji ir draudzīgi pret maģistratūras un doktorantūras studentiem, tad es mierīgi varētu sev palūgt termiņa pagarinājumu, bet es sapratu divas lietas.

Pirmkārt, lai gan uzdevumu nevaru atrisināt pilnībā, kaut ko tomēr varu izdarīt. Un galu galā, ir daudzi uzdevumi ar kuriem mēs dzīvē (un matemātikā) netiekam līdz galam galā, bet starprezultāti arī ir (pierakstīšanas) vērti.

Otrkārt, nav jēgas tērēt visu savu laiku cīnoties ar kādu problēmu, kas pagaidām nav manā līmenī. Varbūt labāk patērēt laiku lai vismaz kaut ko pamācītos. Augstlēcēji jau arī nesāk ar 2.30. Mācoties LU es kaut kā vairāk tendējos uz pētniecību, bet nu saprotu, ka labāk vienkārši lasīt grāmatas, jo nav ka mēģināt kaut ko pētīt, ja nav īsti sajēgas ko un kā (un kāpēc) pētīt.

P.S. Visiem tiem, kas tomēr izturēja, un izlasīja manis rakstīto līdz galam: Vakar es ņēmu rokā draugu uzdāvināto pavārgrāmatu un pirmo reizi mūžā uzcepu maizi. Gardu itāļu maizi. Tā kā man nepatīk veikalos esošā ar gaisu piepūstā tostermaize, tad es varētu biežāk cept pats. Papildus stimuls ir tas, ka šeit (un arī lielākajā daļā dzīvokļu) elektrība un komunālie pakalpojumi ir ierēķināti īrē,  tā kā šāda maize arī izmaksā lētāk.

MAC

Tuesday, December 25th, 2007

Kāda priekšrocība MAC pār PC? Viņš var skūpstīt (vismaz mēģināt) Britniju Spīrsu.

Protams, man jākaunās, ka veltīji vismaz pāris minūtes šīs filmas skatīšanai, kā rezultātā arī redzēju šo kadru.