Luka Taras Korošec ANALIZA IN NADGRADNJA APLIKACIJE ZA DELO Z GRAFI

Size: px
Start display at page:

Download "Luka Taras Korošec ANALIZA IN NADGRADNJA APLIKACIJE ZA DELO Z GRAFI"

Transcription

1 UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA Luka Taras Korošec ANALIZA IN NADGRADNJA APLIKACIJE ZA DELO Z GRAFI DIPLOMSKO DELO LJUBLJANA, 2016

2

3 UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA UNIVERZITETNI ŠTUDIJSKI PROGRAM 1. STOPNJE DVOPREDMETNI UČITELJ Luka Taras Korošec Mentor: doc. dr. Primož Šparl Somentor: as. Matej Zapušek ANALIZA IN NADGRADNJA APLIKACIJE ZA DELO Z GRAFI DIPLOMSKO DELO LJUBLJANA, 2016

4

5 Povzetek Ob svojem študiju na Pedagoški fakulteti Univerze v Ljubljani sem se ob obiskovanju predmetov Teorija grafov, Diskretna matematika in Računalniška matematika spoznal s spletno aplikacijo z0diak za delo z grafi. Aplikacijo, ki vsebuje zajeten nabor funkcij, je v okviru svojega diplomskega dela leta 2013 razvil Luka Jurković. Z njo lahko ustvarimo vizualno reprezentacijo enostavnih neusmerjenih grafov in nato na prikazanem grafu uporabljamo različna orodja. Tekom večletne uporabe aplikacije sem spoznal, da ima le-ta določene pomanjkljivosti in da bi bile dobrodošle kakšne dodatne funkcije, zato sem se odločil, da v okviru svojega diplomskega dela analiziram aplikacijo in njeno uporabnost ter jo nadgradim z novimi funkcijami in funkcionalnostmi. Analizo uporabnosti aplikacije sem opravil s pomočjo anketnega vprašalnika in sicer med študenti, ki so aplikacijo redno uporabljali pri svojem študiju. Glede na rezultate analize odgovorov ter tehnično in algoritemsko zahtevnost implementacije, sem izluščil tiste funkcionalnosti, ki sem jih lahko dodal v aplikacijo. Le-ta sedaj med drugim poleg obstoječih funkcionalnosti podpira tudi izračun in prikaz ožine ter premera grafa, prikaz zaporedja stopenj grafa in funkcije, s katerimi si lahko pomagamo pri iskanju Hamiltonovega cikla. V diplomskem delu je razloženo njihovo delovanje, na konkretnih primerih pa je prikazan tudi primer uporabe funkcij. Ključne besede: graf, aplikacija z0diak, manipulacija grafa, premer, ožina, Hamiltonov cikel MSC klasifikacija (2010): 05C85, 05C62

6 Abstract During my studies at the Faculty of Education, University of Ljubljana, I familiarized myself with a web application for graph manipulation called z0diak while I was attending courses on Graph Theory, Discrete Mathematics and Computer Mathematics. This application, which has a substantial set of functionalities, was developed by Luka Jurković for his diploma thesis in With it we can create visual representations of simple undirected graphs and then use a multitude of tools on the displayed graph. In my years of using this application I realized that it has a few shortcomings and that I would appreciate new additional features. That is why I decided to analyze the application and its usability and upgrade it with new features and functionalities for my diploma thesis. Using a questionnaire and with the help of students who used the application regularly in their studies, the analysis of usefulness of the application has been carried out. According to the results of the analysis of student responses as well as technical and algorithmic complexities of the implementation, I discerned those features that could be added to the application with a reasonable amount of effort and added them. Apart from the existing functionalities the application now also supports the calculation and display of the girth and diameter of the graph, calculation of the graph degree sequence and functions which can help in determining whether a graph contains a Hamiltonian cycle or not. The thesis explains how these functions were implemented and also presents a demonstration of their usage on specific examples. Key words: graph, application z0diak, graph manipulation, girth, diameter, Hamiltonian cycle MSC clasification (2010): 05C85, 05C62

7 Kazalo Uvod 1 1 Opis aplikacije z0diak Izgled Platno Meni in gumbi Okno za izpisovanje navodil in povratnih informacij Zbiranje in analiza podatkov Priprava raziskave Zbiranje in analiza podatkov Zbiranje podatkov Analiza podatkov Izbira novih funkcionalnosti Razveljavitev zadnje akcije Izračun in prikaz ožine ter premera grafa Izpis zaporedja stopenj Preverjanje zadostnih pogojev za obstoj Hamiltonovega cikla Izvoz slike grafa v slikovni obliki Razvoj novih funkcionalnosti Podatkovna struktura aplikacije in dodajanje novih elementov na platno

8 3.1.1 Dodajanje novega vozlišča Dodajanje nove povezave Izpis zaporedja stopenj Algoritem za izračun zaporedja stopenj Implementacija Izračun in prikaz ožine grafa Algoritem za izračun ožine grafa Implementacija algoritma za izračun ožine grafa Izračun in prikaz premera grafa Algoritem za izračun premera grafa Implementacija algoritma za izračun in prikaz premera grafa Preverjanje zadostnih pogojev za obstoj Hamiltonovega cikla Algoritem za preverjanje pogojev izreka Pósa Algoritem za preverjanje pogojev Diracovega izreka Algoritem za preverjanje pogojev Orejevega izreka Izvoz grafa v slikovni obliki Ilustracija uporabe novih funkcionalnosti Iskanje grafa ki vsebuje Hamiltonov cikel, vendar ne zadošča pogojem izreka Diraca Iskanje kletk s podano ožino in stopnjo grafa Iskanje največjega grafa s podano stopnjo in premerom Zaključek 31

9 Slike 1.1 Logotip aplikacije z0diak Aplikacija z0diak, kot izgleda takoj po zagonu Poln graf na petih vozliščih na platnu znotraj aplikacije z0diak Meni in gumbi, ki se nahajajo ob levi strani platna Primeri štirih manjših kletk. Od leve proti desni: Petersenov graf, Heawoodov graf, McGeejev graf in Tutte-Coxeterjev graf Dva neizomorfna grafa z istim zaporedjem stopenj (3, 2, 2, 2, 2, 1, 1, 1) Graf, ki ne zadošča pogojem Diracovega in Orejevega izreka, izpolnjuje pa pogoje izreka Pósa ([13], str. 52) Slika grafa, ki je bila izvožena s pomočjo funkcije za izvoz grafa v slikovni obliki Graf, ki zadošča pogojem izrekov Pósa in Oreja, ne pa tudi pogojem izreka Diraca Graf po tem ko smo 5-ciklu dodali dve vozlišči in ju povezali z dvema obstoječima vozliščema Graf po tem ko smo vsakem izmed vozlišč 2, 3 in 4 dodali še po dva soseda. Z rdečo je predstavljena ena izmed razdalj dolžine 4, ki predstavlja premer grafa.. 30

10

11 Uvod Število spletnih aplikacij je v zadnjih letih močno naraslo. Ob vsakdanji rabi računalnika čedalje pogosteje uporabljamo spletne brskalnike in ob njihovi uporabi preživimo veliko časa, pa naj bo to zaradi dela ali zabave. Odličen primer je Microsoftov urejevalnik besedila Word, ki so ga najprej razvili kot program za operacijski sistem Windows, sedaj pa je že na voljo na spletu kot spletna aplikacija. Zato razumem odločitev avtorja Luka Jurkovića, da je v okviru svojega diplomskega dela [4] razvil spletno aplikacijo z0diak. Ob pisanju diplomskega dela je pridobil novo znanje na tem področju, kar je bil eden izmed njegovih glavnih namenov razvoja aplikacije. Želel si je namreč pridobiti izkušnje z označevalnim jezikom HTML5 in pri tem ustvariti nekaj uporabnega za njegove naslednike na Pedagoški fakulteti. Aplikacija z0diak je namreč namenjena delu z grafi in je za uporabo brezplačna. Vsak študent Pedagoške fakultete si jo lahko prenese na svoj računalnik in jo nato uporablja brez internetne povezave. Prav tako aplikacije ni potrebno namestiti na osebni računalnik. Vse kar je potrebno storiti je, da jo shranimo na trdi disk, odpremo glavno stran in že smo pripravljeni na delo z grafi. Sam sem aplikacijo z0diak spoznal pri predmetu Teorija grafov, kjer smo jo uporabljali za interaktivno vizualizacijo obravnavanih grafov. Med predavanji jo je profesor pogosto uporabljal, da nam je hitro prikazal kakšen primer uporabe trenutno obravnavanih rezultatov na konkretnih primerih grafov. Aplikacija z0diak je mnogim študentom pomagala pri učenju in reševanju domačih nalog, saj podpira številna orodja za delo z grafi, kot so izris pripadnikov podprtih družin grafov, razdaljne particije grafa in pomoč pri iskanju Hamiltonove poti oziroma cikla, če naštejem samo nekaj funkcij. Glavni cilj tega diplomskega dela je analiza obstoječih orodij in funkcionalnosti aplikacije z0diak in zasnova ter izdelava več novih funkcionalnosti. Za njegovo razumevanje je potrebno osnovno znanje računalništva in teorije grafov. Bralcu, ki bi želel ponoviti osnovne pojme s teh dveh področij, v branje predlagam diplomsko delo Luka Jurkovića [4], v katerem je postavil temelje aplikacije, ki jo sedaj mi analiziramo in nadgrajujemo. Vsebuje tako osnove teorije grafov, kot tudi osnove HTML5 in knjižnice Paper.js. V nadaljevanju se bomo držali terminologije, vpeljane v [4]. V 1. poglavju tega diplomskega dela na kratko opišemo delovanje aplikacije in njene glavne funkcionalnosti. Tu se osredotočimo predvsem na plat aplikacije, ki je vidna končnemu uporabniku. Namen poglavja je seznanitev z aplikacijo in njenimi funkcijami. V 2. poglavju predstavimo način zbiranja podatkov o mnenju študentov glede aplikacije z0diak, predstavimo odgovore študentov in jih statistično analiziramo. Glede na izsledke raziskave sem izbral par najbolj zaželenih funkcionalnosti s strani uporabnikov, t.j. študentov, in nekaj tistih funkcij, za katere menim, da bi dobro dopolnjevale ostale dele programa. Vseh zaželenih funkcionalnosti se seveda v času, ki je na voljo za izvedbo diplomskega dela ne da razviti, zato se 1

12 osredotočimo le na nekatere izmed njih. Opisali bomo teoretično podlago za vsako obravnavano funkcijo, naredili analizo možnosti implementacije v aplikacijo in jih nato, če bo implementacija izvedljiva, dodali v obstoječo rešitev. 3. poglavje je namenjeno sami implementaciji izbranih novih funkcionalnosti. Tu predstavimo algoritme, ki so potrebni za implementacijo določene funkcionalnsti. Nekateri algoritmi so seveda bolj zahtevni kot drugi, zato nekaterim funkcijam posvetimo več pozornosti kot drugim. Opišemo tudi težave, s katerimi sem se soočal, in prikažemo rešitve za podane ali nastale probleme. Na koncu tega poglavja si bomo ogledali več primerov uporabe razvitih funkcionalnosti na konkretnih problemih. 2

13 Poglavje 1 Opis aplikacije z0diak Pri vsakem produktu ali spletni strani nam običajno najprej padeta v oko ime in logotip. Ime spletne aplikacije, ki jo bom analiziral, je z0diak. Avtor aplikacije v svojem diplomskem delu navaja, da si je to ime izbral zato, ker zodiakalna znamenja na nek način izgledajo kot grafi [4]. Zvezde predstavljajo vozlišča v grafu, medtem ko povezave med zvezdami predstavljajo povezave med vozlišči v grafu. Kot lahko vidite na sliki 1.1, sta tako ime, kot tudi logotip odlično izbrana glede na namen uporabe aplikacije in kažeta na izvirnost pri izdelavi aplikacije. Slika 1.1: Logotip aplikacije z0diak. 1.1 Izgled Na sliki 1.2 je prikazan izgled aplikacije takoj po zagonu. Vizualno in funkcijsko je razdeljena na tri dele. Platno za izrisovanje grafov (siv pravokotnik, ki zavzema večino prostora na ekranu). Meni in gumbi, z naborom funkcij za delo z grafi (zavzemajo levi del ekrana). Okno za izpisovanje navodil in povratnih informacij (vidno na spodnjem delu ekrana pod platnom). 3

14 Slika 1.2: Aplikacija z0diak, kot izgleda takoj po zagonu. Slika 1.3: Poln graf na petih vozliščih na platnu znotraj aplikacije z0diak Platno Na sliki 1.3 se nahaja avtomatsko izrisan graf, kot je prikazan v aplikaciji. Opazimo lahko, da so vozlišča oštevilčena s števili od 1 do 5 in da so obarvana z enotno barvo. Vozliščem lahko dodajamo povezave, a na polnem grafu tega ne moremo storiti, saj aplikacija ne podpira večkratnih povezav med dvema vozliščema. Aplikacija prav tako ne podpira zank, to so povezave vozlišča samega s seboj. Podprti so torej tako imenovani enostavni grafi. Lahko pa obstoječo povezavo odstranimo s tiščanjem tipke dvigalke (angl. shift) in klikom na povezavo, ki jo želimo odstraniti (na enak način lahko odstranimo tudi vozlišča) Meni in gumbi Meni je del aplikacije, ki vsebuje gumbe, s katerimi lahko dostopamo do velike večine funkcij aplikacije. Poudariti je treba, da zgornje štiri možnosti v meniju vsebujejo tudi podmenije. Na sliki 1.4 je prikazan izgled menija. 4

15 Slika 1.4: Meni in gumbi, ki se nahajajo ob levi strani platna. Vse funkcije, ki se nahajajo v meniju, skupaj z njihovimi kratkimi opisi delovanja, naštete od zgoraj navzdol glede na sliko 1.4, so: Naloži/shrani graf Shrani graf: Trenutno prikazani graf na platnu shrani v tekstovno datoteko za kasnejšo rabo. Naloži graf: Iz podane tekstovne datoteke prebere podatke za izris shranjenega grafa na platno. Osnovne družine grafov Izriši cikel: Izriše cikel dolžine, ki jo poda uporabnik. Izriši cirkulant: Izriše cirkulant s parametri, ki jih poda uporabnik. Izriši poln graf: Izriše poln graf na podanem številu vozlišč. Izriši pot: Izriše pot podane dolžine. Izriši GPG: Izriše posplošeni Petersenov graf glede na podane parametre. Ostala orodja Dvodelnost: Orodje, ki nam pove, ali je trenutno izrisani graf dvodelen ali ne. Oznake (on/off): Kot je razvidno že iz imena funkcije, skrije ali ponovno prikaže oznake na vozliščih. 5

16 Premešaj: Naključno razporedi vozlišča po platnu (povezave med vozlišči ostanejo nespremenjene). Približaj/odmakni pogled Približaj: Približa pogled na platno. Odmakni: Odmakne pogled od platna. Nova vozlišča: Orodje, s katerim dodajamo na platno nova vozlišča. Nove povezave: Orodje, s katerim dodajamo na platno nove povezave med vozlišči. Razdaljna particija: Izpiše kardinalnosti tako imenovanih i-tih soseščin grafa glede na izbrano vozlišče in jih tudi vizualno razporedi in prikaže na platnu. Avtomorfizem: S pomočjo tega orodja lahko ugotavljamo ali je določena vnešena preslikava avtomorfizem tega grafa. Hamiltonova pot/cikel: Orodje, ki nam pove, ali tvorijo izbrane povezave Hamiltonovo pot ali cikel. Barvanje grafa: S tem orodjem lahko enostavno barvamo vozlišča grafa. Orodje nam tudi pove, če smo našli dobro barvanje vozlišč grafa. Izpisovanje (on/off): funkcij. Vključi ali izključi dodatno izpisovanje pri uporabi naprednejših Preimenuj vozlišča: Ob izbiri lahko vozlišče s klikom nanj preimenujemo. Pomoč: Odpre PDF dokument, v katerem je bolj podrobno opisano delovanje aplikacije in njenih funkcij. Ob kliku na katero izmed funkcij nam aplikacija v tekstovnem polju pod platnom izpiše navodila za uporabo te funkcije in pa tudi določene povratne informacije, ki so vezane na samo funkcijo. Bolj podroben opis tega okna sledi v naslednjem podrazdelku Okno za izpisovanje navodil in povratnih informacij Okno za izpisovanje navodil in povratnih informacij je glavni način, s katerim aplikacija komunicira z uporabnikom. Seveda komunicira tudi na ostale načine, kot je recimo obarvanje gumba funkcije, ki je trenutno v uporabi, z rdečo barvo, ali pa obarvanje in označitev vozlišča grafa, nad katerim je miška. Tudi pri funkciji barvanja grafa se vozlišče, nad katerim je kazalec miške, že v naprej obarva z izbrano barvo. Kljub temu pa je potrebno uporabniku povedati veliko več, kot mu lahko povemo z enostavnim barvanjem ali drugimi metodami. Zato se je avtor odločil, da bo implementiral tudi tekstovno polje, v katerem program izpisuje navodila in sporočila za uporabnika ter rezultate izvedenih algoritmov. Eden bolj ilustrativnih primerov sporočila uporabniku se prikaže ob kliku na gumb za barvanje grafa. Sporočilo je sledeče: Vključili ste barvanje grafa. S pomočjo barvne palete lahko sedaj barvate vozlišča. Kliknite za željeno barvo in lahko pričnete z barvanjem vozlišč! Graf ni lih cikel ali poln graf. Po Brooksovem izreku je torej kromatično število grafa manjše ali enako 3. 6

17 Kot vidimo, vsebuje sporočilo par ključnih delov. Najprej nam aplikacija sporoči, da smo uspešno vključili funkcijo barvanje grafa. To je povratna informacija na klik na gumb za barvanje grafa. V računalništvu je koncept povratne informacije zelo pomemben [7]. Če ne dobimo vsaj kakšne povratne informacije, potem kot končni uporabniki aplikacije ne moremo vedeti, kdaj je aplikacija sprejela naš vnos in ga obravnava ter kdaj se je zgodilo nekaj nepričakovanega in aplikacija vnosa enostavno ne more interpretirati. Brez povratne informacije bi se lahko zgodilo, da bi mi čakali na računalnik, računalnik pa bi čakal na nas. Naslednji del sporočila uporabniku so navodila za uporabo funkcije barvanja. Navodilo je kratko, jedrnato in dovolj natančno, da si uporabnik osveži spomin in začne z delom. Če uporabnik navodila ne razume in ne ve kako nadaljevati z delom, lahko v meniju na levi strani kadarkoli klikne na gumb Pomoč in si prebere bolj natančna navodila za uporabo neke določene funkcije, s katero ima težave. Navodila se odprejo v novem zavihku, tako da ni bojazni, da bi zaradi tega izgubili delo, ki smo ga do tedaj že naredili. Zadnji del sporočila se pokaže le, ko je to relevantno, torej v tem primeru samo takrat, ko graf zadovolji pogojem Brooksovega izreka. Tu pa ne gre ne za povratno informacijo, ne za navodilo, ampak za pogojno sporočilo, ki uporabniku (če ne pozna Brooksovega izreka, ali pa je nanj le pozabil) olajša delo. Uporabnik tako spozna zgornjo mejo kromatičnega števila grafa in se lahko omeji na določeno število barv. Aplikacija ob ustreznem barvanju grafa uporabniku to tudi sporoči s sporočilom:,,barvanje grafa je ustrezno!. Sporočilo se izpiše le, če smo ustrezno pobarvali vsa vozlišča, medtem ko na vmesnih korakih uporabnik o njegovem napredku oziroma pravilnosti njegovega barvanja ni obveščen. To možnost lahko vklopimo s klikom na gumb Izpisovanje (on/off). Takrat ob vsakem na novo pobarvanem vozlišču dobimo sporočilo:,,barvanje ni ustrezno!, če barvanje (še) ni ustrezno. S tem zaključujemo kratek opis aplikacije. Za bolj natančno seznanitev z uporabo aplikacije si lahko bralec prebere diplomsko delo,,aplikacija za delo z grafi [4], hkrati pa aplikacijo tudi sam preizkusi. 7

18 Poglavje 2 Zbiranje in analiza podatkov V tem poglavju bomo spoznali metodologijo zbiranja podatkov o uporabi programa med študenti Pedagoške fakultete Univerze v Ljubljani, ki so uporabljali aplikacijo z0diak. Podatke bomo analizirali in interpretirali. 2.1 Priprava raziskave Z raziskavo želimo ugotoviti, katere funkcionalnosti so študenti največ uporabljali in katere funkcionalnosti po njihovem mnenju aplikaciji manjkajo in bi si jih želeli v novi različici. Z mentorjevo pomočjo sem prišel tudi do načina realizacije raziskave. Predlagal mi je, naj sestavim kratko anketo in jo dam izpolniti študentom po enem izmed njegovih predavanj. Na ta način so anketo izpolnili študenti, ki so aplikacijo z0diak zagotovo uporabljali vsaj dve študijski leti. Omeniti velja tudi dejstvo, da so lahko ob izpolnjevanju vprašalnika za dodatna pojasnila vprašali mene osebno. V naslednjem koraku sem pripravil anketo. V ta namen sem se moral najprej temeljito seznaniti z aplikacijo, spoznati katere funkcije vsebuje, kako se uporablja in katere funkcije se meni osebno zdijo nedodelane ali manjkajoče. Zapiski iz predmeta Teorija grafov [13] so mi bili v veliko pomoč, saj sem za vse grafovske primere in naloge poiskušal uporabiti z0diak in funkcionalnosti, ki jih vsebuje. Ob tem sem si zapisoval, katere funkcije bi bile koristne in uporabne, a jih aplikacija ne vsebuje. Na ta način sem dodobra spoznal delovanje aplikacije in si izdelal seznam manjkajočih, a po mojem mnenju uporabnih funkcionalnosti. Na koncu je bilo potrebno le še sestaviti anketo. Glede na namen raziskave sem se odločil za vprašanja o uporabnosti in pogostosti uporabe funkcij. Študente sem povprašal po njihovi oceni uporabnosti in frekvenci uporabe funkcij, ki jih aplikacija trenutno že vsebuje. Namen teh dveh vprašanj je dobiti vpogled v način dela z aplikacijo s strani študentov. Tretje vprašanje na anketi sprašuje po oceni zaželenosti implementacije funkcij, ki jih z0diak trenutno še ne vsebuje. Tu sem naštel funkcije, ki sem jih ob podrobnem branju zapiskov v aplikaciji pogrešal, ali pa se mi je zdela moja zamišljena funkcionalnost še posebej uporabna. Seznam predlaganih funkcionalnosti so lahko študentje po želji dopolnili z njihovimi idejami, ki jih niso našli med že naštetimi, saj sem jim dal možnost prostega vnosa njihovih idej. 8

19 Pri četrtem vprašanju sem si pomagal s Perlmanovim vprašalnikom [11]. Nekatera vprašanja iz njegovega originalnega vprašalnika sem izpustil ali poenostavil. V tem zadnjem vprašanju sem študente spraševal po uporabnosti, enostavnosti uporabe in učenja uporabe ter o zadovoljstvu pri uporabi aplikacije. Gre za oceno celotne aplikacije in ne samo posameznih delov ali funkcij. Na koncu vprašalnika so imeli študentje možnost, da v obliki prostega teksta sporočijo še karkoli drugega, kar se jim je zdelo pomembno pri mojem delu. Končna različica anketnega vprašalnika je na voljo kot priloga k temu diplomskemu delu. 2.2 Zbiranje in analiza podatkov Zbiranje podatkov Anketo sem izvedel po koncu predavanj pri predmetu Raziskovalni pristop k algebri in diskretni matematiki profesorja doc. dr. Primoža Šparla. Študentje, ki obiskujejo ta predmet na drugostopenjskem študijskem programu Poučevanje, so v prejšnjih letih obiskovali več predmetov, pri katerih so aplikacijo redno uporabljali, zato jo poznajo in jo znajo uporabljati. Študente sem najprej nagovoril in jim povedal kakšen je namen moje raziskave, ter jih prosil, če lahko tisti, ki so aplikacijo uporabljali, izpolnijo kratko anketo. Izpolnilo jo je 26 študentov, a sem eno anketo takoj odstranil iz nabora za analizo, ko mi je študentka ob oddaji priznala, da aplikacije z0diak ni nikoli uporabljala. Analiziral sem torej 25 izpolnjenih anket Analiza podatkov Zbrane ankete sem za lažjo analizo vnesel v razpredelnico na računalniku, kjer sem potem izvajal vso potrebno analizo. Za potrebe te raziskave nisem potreboval več kot le povprečje podanih odgovorov in pa standardni odklon, za vpogled v medsebojna odstopanja mnenj. Vprašanji uporabnosti in pogostosti uporabe funkcij v aplikaciji z0diak Prvi dve vprašanji se nanašata na isto množico funkcij, ki so jih morali študentje oceniti, tako da bomo ti dve vprašanji obravnavali skupaj. Prvo vprašanje se glasi:,,kako ocenjujete uporabnost spodaj naštetih funkcij?, drugo pa:,,katere funkcije aplikacije ste najbolj uporabljali?. Študentje so morali vsako našteto funkcionalnost oceniti z oceno od 1 do 5, pri čemer 1 označuje najmanj, 5 pa najbolj uporabno ali uporabljano funkcijo. V tabeli 2.1 se nahajajo povprečja in standardni odkloni ocen funkcij za obe vprašanji. 9

20 Zaporedna 1. vprašanje (uporabnost) 2. vprašanje (uporaba) št. funkcije Povprečje Std. odklon Povprečje Std. odklon 1 3,83 1,01 2,92 1,32 2 4,76 0,44 3,84 1,18 3 4,48 0,82 3,60 1,12 4 3,32 1,15 2,44 1,26 5 3,60 1,29 2,60 1,53 6 3,24 1,13 2,56 1,36 7 4,76 0,60 3,76 1,01 8 4,12 1,30 3,28 1,31 9 4,12 1,36 3,40 1, ,92 1,26 3,44 0, ,68 1,11 2,44 1, ,28 1,14 3,88 1,05 Tabela 2.1: Povprečja in standardni odkloni ocen funkcij iz prvega in drugega vprašanja v anketi. Glede na povprečja ocen iz vprašanja o uporabnosti funkcij lahko razberemo, da sta študentom najbolj uporabni funkciji za izrisovanje pripadnikov podprtih družin grafov in za izris razdaljne particije grafa. Imeli sta namreč najvišjo povprečno vrednost (4,76) izmed vseh funkcij. Pri teh dveh je bil tudi standardni odklon najnižji (0,44 in 0,60), kar pomeni, da so imeli študentje zelo enotno mnenje o teh dveh funkcionalnostih. Sledi jima funkcija, ki ugotavlja dvodelnost grafa in sicer ima povprečno vrednost 4,48 in relativno nizek standardni odklon 0,82. Študentje so kot najmanj uporabno funkcijo ocenili približevanje in oddaljevanje pogleda (povprečje 3,24 in standardni odklon 1,13). Tudi sam nisem veliko uporabljal te funkcionalnosti, tako da me to ne čudi. Redko smo morali namreč delati s tako velikimi grafi, da jih ne bi mogli lično prikazati na zaslonu brez oddaljevanja pogleda. Hkrati pa je privzeta velikost vozlišč in povezav dovolj velika, da pri delu ne potrebujemo približevanja pogleda, če delamo z grafi, ki nimajo velikega števila vozlišč. Pri drugem vprašanju je bila pričakovano najbolje ocenjena funkcija za premikanje vozlišč grafa (povprečje 3,88 in standardni odklon 1,05), sledi pa ji funkcija izrisovanja pripadnikov podprtih družin grafov (povprečje 3,84 in standardni odklon 1,18). Na tretjem mestu po uporabi sledi izris razdaljne particije (povprečje 3,76 in standardni odklon 1,01). Kot lahko vidimo, so se tu mnenja študentov bolj razlikovala kot pri prejšnjem vprašanju, razlika med najbolje ocenjenima funkcijama pa je zanemarljiva. Med najmanj uporabljanimi funkcijami sta funkciji, ki sta vezani na oznake vozlišč. Prva je možnost vklopa/izklopa oznak vozlišč (povprečje 2,44 in standardni odklon 1,26), druga pa je preimenovanje vozlišč (povprečje 2,44 in standardni odklon 1,33). Sklepam, da študentje enostavno niso preimenovali oznak vozlišč, saj jim je bilo privzeto in avtomatsko poimenovanje oznak z naraščajočimi celimi števili sprejemljivo dobro. Vklop in izklop oznak vozlišč kot kaže prav tako nimata neke velike uporabne vrednosti, saj lahko oznake brez težav ignoriramo in nadaljujemo z delom. Dve izmed situacij, v katerih bi ta funkcija prišla prav, sta situacija ko želimo narediti sliko grafa za izvoz in pa situacija ko bi delali s tako velikim grafom, da bi oznake zavzemale prepotreben prostor na platnu. 10

21 Vprašanje zaželenosti implementacije manjkajočih funkcionalnosti Tretje vprašanje v anketi je bilo namenjeno ugotavljanju zaželenosti implementacije določenih manjkajočih funkcionalnosti. Študentje so morali naštete funkcije oceniti s številom od 1 do 5, pri čemer 1 označuje najmanj, 5 pa najbolj zaželeno funkcijo. Imeli so tudi možnost dopisati svojo funkcionalnost, če le-ta ni bila vsebovana v seznamu. Samo en/a študent/ka je dodatno zapisal/a, da si želi možnost shranjevanja grafov v obliki slike, kar je zelo dober predlog in se nanj ob zasnovi ankete sam nisem spomnil. Rezultati ankete so zbrani v tabeli 2.2. Zap. št. funkcije Povprečje Std. odklon 1 4,44 0,92 2 4,68 0,56 3 4,12 1,09 4 3,84 1,03 5 4,36 0,81 6 4,84 0,47 7 4,36 0,64 8 3,88 0,78 9 4,32 0, ,40 0, ,12 0, ,00 1, ,20 1, ,58 1, ,21 1,35 Tabela 2.2: Povprečja in standardni odkloni ocen zaželenosti implementacije novih funkcij pri tretjem vprašanju v anketi. Rezultati analize so pokazali, da je najbolj zaželena funkcija v applikaciji z0diak razveljavitev (angl. undo) s povprečno oceno 4,84 in standardnim odklonom 0,47. Sam sem med delom z aplikacijo večkrat instinktivno pritisnil kombinacijo tipk Ctrl + Z, ki v večini aplikacij predstavlja bližnjico za razveljavitev zadnje akcije, a se z0diak ni odzval, saj razveljavitve ne podpira. Tudi ostali študentje so, glede na visoko povprečje ocen, naleteli na to težavo in si zato sedaj želijo implementacije te funkcionalnosti. Naslednja funkcija, ki po povprečni vrednosti ocen sledi razveljavitvi, je izračun in prikaz ožine in premera grafa (povprečna vrednost 4,68 in standardni odklon 0,56). Tudi tu so imeli študentje med seboj glede na standardni odklon kar podobno mnenje. Tretja najvišje uvrščena funkcionalnost je izpis zaporedja stopenj (povprečna vrednost 4,44 in standardni odklon 0,92). Zdi se kar malce nenavadno, da avtor aplikacije z0diak izpisa zaporedja stopenj grafa ni implementiral že sam, saj algoritem za izračun res ni zahteven. Vprašanje uporabniške izkušnje Zadnje (četrto) vprašanje se nanaša na uporabniško izkušnjo. Študentje so morali oceniti uporabnost aplikacije, enostavnost uporabe, enostavnost učenja uporabe in zadovoljstvo pri uporabi aplikacije. Vsako izmed teh področij vsebuje nekaj trditev kot so,,je koristna,,,lahko jo uporabljam brez pisnih navodil ali,,dela tako, kot si želim, da deluje. S številko od vključno 1 do 5 so morali študentje oceniti, v kolikšni meri se strinjajo s trditvami, pri čimer 1 označuje popolno nestrinjanje, 5 pa popolno strinjanje. 11

22 Zap. št. trditve Povprečna vrednost Std. odklon Uporabnost aplikacije Enostavnost uporabe Enostavnost učenja uporabe Zadovoljstvo Tabela 2.3: Povprečja in standardni odkloni ocen trditev iz zadnjega vprašanja v anketi. Poglejmo si najprej rezultate analize o uporabnosti aplikacije. Študentje se v največji meri strinjajo, da je aplikacija koristna (povprečna vrednost 4,64 in standardni odklon 0,49). Kljub koristnostni aplikacije vseeno menijo, da aplikacija ne izpolnjuje nujno vseh njihovih potreb, saj ima ta trditev najnižjo povprečno vrednost 3,36 in najvišji standardni odklon 1,19, kar nakazuje določeno mero razpršenosti mnenja študentov. V razdelku Enostavnost uporabe imamo najnižjo povprečno vrednost 2,92 in najvišji standardni odklon 1,35 pri trditvi,,če naredim napako, jo lahko hitro odpravim, kar nakazuje na to, da je v aplikaciji res nujno potrebna funkcionalnost razveljavitve zadnje akcije. To je konsistentno z odgovori pri tretjem vprašanju, kjer je bila najbolj zaželena funkcija ravno razveljavitev zadnje akcije. Glede na povprečno vrednost prve trditve (povprečna vrednost 4,16 in standardni odklon 1,11) študentje menijo, da je aplikacija enostavna za uporabo in zanjo ne potrebujejo pisnih navodil (povprečna vrednost 3,96 in standardni odklon 1,10). Študenti so dobro ocenili enostavnost učenja uporabe, saj imajo vse tri trditve povprečno oceno nad 4, standardni odklon pa vse okoli 1. Kljub temu pa so se študentje hitreje naučili uporabljati aplikacijo, kot postali z njo spretni. V zadnjem razdelku, ki se nanaša na zadovoljstvo, so študentje ocenili, da so z aplikacijo zadovoljni in da je prijetna za uporabo (povprečni oceni 4,08 in 4,00, ter standardna odklona 0,81 in 0,87). Kljub temu pa menijo, da aplikacija za njihov študij ni ključnega pomena (povprečna vrednost 2,64 in standardni odklon 1,25). 12

23 2.3 Izbira novih funkcionalnosti V prejšnjem razdelku smo videli, katerih novih funkcionalnosti si želijo študentje, ki so aplikacijo uporabljali dalj časa. Naš cilj je bil, da v aplikacijo, glede na izsledke ankete, dodamo tri najbolj zaželene funkcije. V tem razdelku analiziramo možnost implementacije teh funkcij in komentiramo možnost implementacije še kakšne dodatne funkcije, ki ni prišla v sam vrh želja Razveljavitev zadnje akcije Najbolj zaželena funkcionalnost je bila razveljavitev zadnje akcije. Dandanes skoraj vsaka aplikacija vsebuje nek sistem razveljavitve sprememb (poudariti je treba, da skoraj vse aplikacije, ki omogočajo razveljavitev sprememb, omogočaju tudi preklic razveljavitve spremembe in povrnitev v stanje pred razveljavitvijo spremembe), ki jih delamo tekom dela z aplikacijo, pa naj bo to razveljavitev brisanja besede ali pa razveljavitev potega čopiča v risarskih programih. Tako se zdi ta funkcionalnost že skoraj samoumevna in zato je razumljivo, da si jo študentje želijo uporabljati tudi v tej aplikaciji. Strinjam se, da bi ta funkcionalnost močno poenostavila uporabo aplikacije, saj moramo sedaj ob napaki v najslabšem primeru z delom začeti od začetka, v najboljšem pa vsaj ponoviti par zadnjih akcij, ki smo jih izvedli. Razvoja razveljavitve zadnje akcije bi se lahko lotili na dva načina. Prvi je načeloma sila preprost. Ustvarili bi povezan seznam, katerega elementi so stanja grafa na platnu. Vsako vozlišče seznama ima kazalec na svojega predhodnika in naslednika. Ob vsaki spremembi na platnu bi se na konec seznama dodalo nov element, ki bi vseboval trenutno vsebino platna (to so vozlišča, povezave ter njihove lokacije, označbe vozlišč, barve, itd.). Ob razveljavitvi zadnje akcije bi izbrisali vsebino platna, se pomaknili v povezanem seznamu na predhodnika trenutnega elementa in izrisali graf. Če bi si želeli preklicati našo razveljavitev zadnje akcije, bi morali postopek ponoviti v obratni smeri. S tem bi implementirali osnovno (četudi relativno prostorsko zahtevno) funkcionalnost razveljavitve zadnje akcije. Drug način, ki je veliko bolj eleganten, pa je v programerskem svetu poznan kot ukazni vzorec (angl. command pattern), ki je del zasnovnih vzorcev (angl. design patterns) v objektnem programiranju ([3] in [12]). Vsako akcijo z vsemi potrebnimi informacijami, ki jo lahko sproži uporabnik, se nekako zapiše v nek objekt in se ga pošlje mehanizmu, ki skrbi za njihovo izvedbo. Nabor možnih akcij je vnaprej določen (različne podprte funkcije), spreminjajo se samo podatki, s katerimi določena akcija operira. Za implementacijo razveljavitve zadnje akcije potrebuje vsaka funkcija metodo, s katero povrne stanje na stanje pred izvedbo akcije. Vse kar potem preostane je to, da si zapomnimo izvedene akcije. V primeru, ko želi uporabnik razveljaviti zadnjo akcijo, pogledamo zadnjo izvedeno akcijo in pokličemo njeno metodo za povrnitev prvotnega stanja, kazalec trenutno izvedene akcije pa v povezanem seznamu prestavimo za en člen nazaj. S tem bi implementirali funkcionalnost razveljavitve zadnje akcije na eleganten in prostorsko manj zahteven način. Po pregledu programske kode, ki sestavlja aplikacijo, sem spoznal, da implementacija prve ali druge možnosti ne pride v poštev (oziroma bi bilo kaj takega zelo nepraktično in v nasprotju z uveljavljenimi standardi v računalništvu), predvsem zato, ker avtor originalne aplikacije te funkcionalnosti ob razvoju aplikacije ni predvidel. Posledica takega razvoja je koda, ki ne sledi spremembam na platnu na način, smiselen za implementacijo razveljavitve zadnje akcije. Stanje na platnu se hrani v več spremenljivkah, ki so med seboj na prvi pogled neodvisne. Podrobnejša analiza je pokazala, da veliko število globalnih spremenljivk v najslabšem primeru onemogoča, 13

24 v najboljšem primeru pa zelo otežuje sledenje spremembam v delovanju programa. Če bi želeli implementirati prvi algoritem za razveljavitev zadnjih akcij, bi zato morali ob vsaki spremembi shraniti spremenljivke, ki so se spremenile. To bi pomenilo zelo natančno poglabljanje v samo drobovje aplikacije in bi vzelo ogromno časa, saj iz kode na prvi pogled ni razvidno, katere spremenljivke so uporabljene samo v nekem delu programa in katere povsod. Drugi algoritem bi prišel v poštev v primeru, da bi avtor vgradil akcije v samostojne objekte že od samega začetka razvoja aplikacije. Predelava programa bi v tem primeru pomenila popoln prepis aplikacije z upoštevanjem ukaznega vzorca pri razvoju aplikacije. Implementacija funkcionalnosti razveljavitve zadnje akcije zaradi nesorazmernosti potrebnega truda in rezultatom le-tega zato ne pride v poštev v okviru tega diplomskega dela. Vsekakor pa je to eden izmed pomembnejših korakov ob morebitni obširnejši predelavi aplikacije v prihodnosti Izračun in prikaz ožine ter premera grafa Druga najbolj zaželena funkcionalnost je bila izračun in prikaz ožine ter premera grafa. Tu gre pravzaprav za dve različni funkcionalnosti, zato ju bomo kot taki tudi obravnavali. Začnimo z ožino grafa. Ožina grafa Najprej definirajmo ožino enostavnega neusmerjenega grafa. Definicija: Imejmo graf Γ = (V, E). Ožina grafa je tedaj definirana kot dolžina najkrajšega cikla v Γ oziroma je definirana kot, če Γ ne vsebuje nobenega cikla. Kot cikel tu smatramo sklenjen sprehod, ki se torej začne in konča v istem vozlišču, sicer pa ne obišče nobenega vozlišča dvakrat. Pri ožini grafa se velikokrat omenja tudi kletke, še posebej kubične. To so najmanjši možni kubični grafi (vsa vozlišča imajo stopnje 3) z dano ožino g. Takim grafom se reče tudi g-kletke. Najbrž je najbolj znan Petersenov graf, ki je edinstvena 5-kletka (torej najmanjši kubični graf z ožino 5). Heawood-ov graf je 6-kletka, McGee-jev graf 7-kletka in Tutte-Coxeter-jev graf 8-kletka [10]. Predstavljeni so na sliki 2.1. Slika 2.1: Primeri štirih manjših kletk. Od leve proti desni: Petersenov graf, Heawoodov graf, McGeejev graf in Tutte-Coxeterjev graf. Za izračun ožine grafa potrebujemo seznam vozlišč in povezav grafa. Le-te imamo v aplikaciji 14

25 z0diak na voljo v objektu Graph. Pri implemetaciji te funkcionalnosti nas torej nič ne omejuje. V svoji raziskavi sem našel tudi dva algoritma za izračun ožine grafa, ki pa sta bolj podrobno opisana v podrazdelku 3.3.1, kjer je tudi opisano, kako smo to funkcionalnost dejansko implementirali v aplikacijo. Premer grafa Najprej definirajmo premer grafa. Ponovno se bomo omejili samo na enostavne neusmerjene grafe. Definicija: Premer enostavnega neusmerjenega grafa Γ = (V, E) je najdaljša razdalja med katerimkoli parom vozlišč v, u V. Razdalja med dvema vozliščema grafa je število povezav v najkrajši poti, ki povezuje ti dve vozlišči. Če ne obstaja nobena pot, ki bi povezovala dani dve vozlišči grafa, potem je razdalja med tema dvema vozliščema enaka. Tudi za izračun premera grafa zadošča seznam vozlišč in povezav. Prav tako potrebujemo algoritem, s katerim bomo izmerili najkrajše poti med poljubnimi pari vozlišč grafa. Tak algoritem poznamo pod imenom Dijkstrov algoritem [5], poglavje 4.4. Opis njegove uporabe za to funkcionalnost je podan v podrazdelku Izpis zaporedja stopenj Tretja najbolj zaželena funkcionalnost je izpis zaporedja stopenj. Gre za enostavno funkcijo, ki pa nam lahko ob pogostem delu z aplikacijo olajša delo. Tudi tu najprej podajmo definicijo zaporedja stopenj. Definicija: Zaporedje stopenj neusmerjenega grafa Γ = (V, E) je padajoče zaporedje stopenj vozlišč grafa Γ, pri čemer je dolžina zaporedja enaka V. Zaporedje stopenj je seveda neodvisno od izbrane reprezentacije grafa, zato imajo izomorfni grafi isto zaporedje stopenj. Moramo pa biti pozorni, saj isto zaporedje stopenj še ne pomeni nujno, da sta dva grafa izomorfna. Zaporedja stopenj grafa torej ne moremo uporabiti za identifikacijo točno določenega grafa. Kot zanimivost omenimo še tako imenovani problem zaporedja stopenj grafa. To je problem, kjer želimo za podano padajoče zaporedje naravnih števil poiskati vsaj enega ali kar vse grafe, ki imajo zaporedje stopenj enako podanemu zaporedju števil. Podano zaporedje, za katerega lahko najdemo vsaj en graf, ki ima tako zaporedje stopenj, imenujemo grafično. Nobeno padajoče zaporedje naravnih števil z liho vsoto, zaradi sodosti vsote stopenj vseh vozlišč v poljubnem grafu (kar nam zagotavlja Lema o rokovanju [6]), ne ustreza nobenemu grafu in zato ni grafično [16]. Seveda pa niti vsako padajoče zaporedje naravnih števil s sodo vsoto stopenj vozlišč ni grafično. Tu omenimo, da obstaja preprost algoritem za ugotavljanje grafičnosti zaporedja stopenj. Če je le-to grafično, lahko s preprostim algoritmom vsaj en tak graf tudi konstruiramo. Ta dva algoritma bi bilo tako možno implementirati v aplikacijo v morebitni nadaljnji posodobitvi. Primer istega zaporedja stopenj za dva neizmorfna grafa je podan na sliki 2.2. Neizomorfnost 15

26 lahko dokažemo na enostaven način. Pogledati moramo le sosede vozlišča stopnje 3. Hitro opazimo, da ima vozlišče stopnje tri na zgornjem grafu dva soseda stopnje dva in le enega soseda stopnje ena, medtem ko ima vozlišče stopnje tri na spodnjem grafu dva soseda stopnje ena in enega soseda stopnje dva. Ker v vsakem grafu obstaja le eno vozlišče stopnje 3 in imata ti dve vozlišči med sabo različne prej naštete lastnosti, sta grafa medseboj neizomorfna, saj se ne ujemata v vseh njunih lastnostih. Slika 2.2: Dva neizomorfna grafa z istim zaporedjem stopenj (3, 2, 2, 2, 2, 1, 1, 1). Čeprav bi morali študentje brez težav znati zapisati zaporedje stopenj poljubnega danega grafa, so si vseeno zaželeli, da bi aplikacija z0diak vsebovala tudi to funkcionalnost. Najbrž zato, ker je za večje grafe zapis zaporedja stopenj dolgočasno delo, ki zahteva nekaj natančnosti, vseeno pa je ujemanje zaporedja stopenj dveh grafov prvi potreben pogoj za njuno izomorfnost. Funkcijo bomo zato implementirali v aplikacijo predvsem zaradi priročnosti. Za izpis zaporedja stopenj grafa ne potrebujemo zahtevnih algoritmov, le sprehod čez vsa vozlišča in urejanje dobljenega seznama. Podroben opis algoritma se nahaja v podrazdelku Preverjanje zadostnih pogojev za obstoj Hamiltonovega cikla Ta funkcija sicer ni bila v samem vrhu po zaželenosti, vendar pa se zdi, da bi lahko njena implementacija v določenih primerih precej pripomogla pri preverjanu hamiltonskosti danega grafa. Aplikacija namreč že vsebuje funkcionalnost, s katero lahko uporabnik sam išče tak cikel. Zato se zdi smiselno, da dodamo v aplikacijo tudi preverjanje pogojev izrekov Pósa, Oreja in Diraca, ki podajajo zadostne pogoje za obstoj Hamiltonovega cikla. Na ta način bi pomagali študentom pri ugotavljanju, ali graf vsebuje tak cikel ali ne. Izmed vseh treh je najmočnejši izrek Pósa in že samo z njegovo implementacijo bi dobili najboljši možen odgovor na vprašanje hamiltonskosti grafa [13]. Kljub temu sem se odločil tudi za implementacijo funkcionalnosti preverjanja pogojev izreka Oreja in Diraca, saj bodo lahko na ta način študentje na različnih primerih ugotovili kako se izreki med seboj primerjajo po moči. Prav tako ju bodo lahko uporabili za učenje in vadbo. Začnimo s izrekom Pósa. Izrek Pósa: Naj bo Γ graf reda n 3, za katerega velja naslednje. Za vsak 1 k < (n 1)/2 obstaja manj kot k vozlišč stopnje največ k v Γ, če pa je n liho število, dodatno velja še, da v Γ obstaja največ (n 1)/2 vozlišč stopnje največ (n 1)/2. Tedaj Γ premore Hamiltonov cikel. 16

27 Iz samega izreka že lahko razberemo, da bomo problem lahko rešili s sprehodom čez vse k in hkrati tudi čez zaporedje stopenj grafa, kjer bomo šteli število vozlišč določene stopnje. Časovna kompleksnost algoritma tako ne bo previsoka za implementacijo, saj bo največ O( V log( V )), kjer je V množica vozlišč grafa. Večina kompleksnosti izhaja iz funkcije za izračun zaporedja stopenj saj vsebuje sortiranje. Taka kompleksnost nas za grafe, ki jih študentje vnašajo v program, ne skrbi. Težave ne bi nastopile niti v primeru, če bi v aplikacijo vnesli graf, ki vsebuje npr vozlišč. Diracov izrek: Naj bo Γ graf reda n 3, v katerem je poljubno vozlišče stopnje vsaj n/2. Tedaj Γ premore Hamiltonov cikel. Tudi pri Diracovem izreku vidimo, da ni algoritmično zahteven in da ga bomo lahko implementirali kar z lastnim znanjem. Kompleksnost algoritma bo podobno kot prej O( V log( V )), saj potrebujemo za pregled samo en sprehod čez zaporedje stopenj grafa. Orejev izrek: Naj bo Γ graf reda n 3, v katerem je vsota stopenj poljubnega para nesosednjih vozlišč vsaj n. Tedaj Γ premore Hamiltonov cikel. Izmed vseh treh izrekov, se zdi Orejev izrek še najtežji za implementacijo, saj bomo morali pregledati vsak par nesosednjih vozlišč in preveriti vsoto njunih stopenj. Vseeno bil sem prepričan, da ne bo predstavljal večjih težav, zato sem se odločil tudi za njegovo implementacijo v aplikacijo. Izrek Pósa je izmed vseh treh izrekov najmočnejši, kar je dokazano v zapiskih [13], str. 53. Diracov in Orejev izrek namreč sledita iz izreka Pósa. Graf na sliki 2.3 izpolnjuje le pogoje izreka Pósa, ne zadošča pa pogojem Diracovega in Orejevega izreka, kar nakazuje na dejstvo, da je Pósev izrek res najmočnejši. Slika 2.3: Graf, ki ne zadošča pogojem Diracovega in Orejevega izreka, izpolnjuje pa pogoje izreka Pósa ([13], str. 52) Izvoz slike grafa v slikovni obliki Ob pregledovanju podatkov, pridobljenih z anketo, sem med dodatnimi predlogi za funkcionalnosti zasledil tudi predlog za izvoz grafa v slikovni obliki. Ob sestavljanju ankete na to funkcionalnost nisem pomislil, zato sem bil nad predlogom prijetno presenečen. Kar nekaj študentov uporablja aplikacijo z0diak za izdelavo slik grafov, ki jih potem uporabijo v raznih seminarskih nalogah in diplomskih delih. Doslej je bil postopek shranjevanja slike sledeč. Najprej moramo v aplikaciji izdelati graf. Tu lahko uporabimo že vgrajene grafe ali pa ga ustvarimo ročno z dodajanjem vozlišč in povezav. Nato ustvarimo zaslonsko sliko celotnega zaslona in jo shranimo. Taka zaslonska slika vsebuje tudi orodno vrsto, odprte zavihke in ostale 17

28 elemente, ki jih seveda ne želimo imeti v končni sliki, zato moramo sliko obrezati, da nam na njej ostane samo še graf. Šele nato lahko sliko shranimo in jo vstavimo v dokument. Slika, izdelana na tak način, ima sivo ozadje (platno) in tako stilsko ne sodi v nekatere dokumente, ki imajo po večini belo podlago. Proces je po nepotrebnem preveč zahteven in če ne drugega za večino študentov vsaj nadležen. Funkcija za izvoz bi bistveno olajšala zgoraj opisan proces, zato sem se odločil, da implementiram tudi to funkcionalnost. Po kratkem raziskovanju na spletu sem spoznal, da je izvoz platna v slikovni obliki enostaven in zanj ne potrebujemo kakega zahtevnega algoritma. 18

29 Poglavje 3 Razvoj novih funkcionalnosti Preden predstavimo algoritme, s katerimi bomo v aplikacijo z0diak implementirali izbrane nove funkcionalnosti, si najprej poglejmo osnovno podatkovno strukturo v kateri je zapisan graf in vse njene lastnosti. 3.1 Podatkovna struktura aplikacije in dodajanje novih elementov na platno Aplikacija z0diak hrani graf v globalni spremenljivki Graph, ki je tipa Graph data structure. Graph torej vsebuje tako tabelo vozlišč nodes in tabelo povezav lines. 1 function Graph_data_structure () { // struktura grafa 2 this. nodes = new Array (); 3 this. lines = new Array (); 4 } 5 6 function node () { // struktura vozlisca 7 this. construct = new Path. Circle (); 8 } Delček kode 3.1: Osnovna podatkovna struktura grafa v aplikaciji Dodajanje novega vozlišča Če želi uporabnik grafu dodati novo vozlišče, z miško klikne na gumb Nova vozlišča in nato klikne na poljubno mesto na platnu, kamor želi postaviti vozlišče. Ob kliku na platno, se sproži dogodek (angl. event), ki v sebi nosi podatke kot so lokacija klika in podobno. Lokacijo dogodka potem uporabimo v drugem koraku dodajanja vozlišča, saj ustvarimo nov krog z lokacijo (event.point) in polmerom 12 enot (4. vrstica v delčku kode 3.2). 1 // Inicializiramo element 2 Graph. nodes [ Graph. nodes. length ] = new node (); 3 // Definiramo lokacijo in velikost vozlisca 4 Graph. nodes [ Graph. nodes. length - 1]. construct = new Path. Circle ( event. point, 12) ; 5 // Vozliscu nastavimo barvo na modro 19

30 6 Graph. nodes [ Graph. nodes. length - 1]. construct. fillcolor = " #00 F"; 7 // Vozliscu nastavimo mesanje barv 8 Graph. nodes [ Graph. nodes. length - 1]. construct. blendmode = exclusion ; 9 // Vozliscu dodamo funkcionalnost barvanja na rdeco ob premiku miske nad vozlisce 10 Graph. nodes [ Graph. nodes. length - 1]. construct. attach ( mouseenter, function () { 11 this. fillcolor = red ; 12 }); 13 // Vozliscu dodamo funkcionalnost barvanja na modro ob premiku miske z vozlisca 14 Graph. nodes [ Graph. nodes. length - 1]. construct. attach ( mouseleave, function () { 15 if ( addingedge == false EdgeConstruction == false ) 16 this. fillcolor = blue ; 17 else if ( setactive ) 18 this. fillcolor = blue ; 19 }); 20 // Inicializiramo napis na vozliscu 21 Graph. nodes [ Graph. nodes. length - 1]. construct. vertex = new PointText ; 22 // Nastavimo barvo napisa na belo 23 Graph. nodes [ Graph. nodes. length - 1]. construct. vertex. fillcolor = white ; 24 // Nastavimo oznako vozlisca 25 Graph. nodes [ Graph. nodes. length - 1]. construct. vertex. content = content_input ; 26 // Nastavimo polozaj napisa nad lokacijo vozlisca 27 Graph. nodes [ Graph. nodes. length - 1]. construct. vertex. position = Graph. nodes [ Graph. nodes. length - 1]. construct. position ; 28 // Ustvarimo prazno tabelo sosedov, saj je bilo vozlisce ravnokar ustvarjeno in se nima sosedov 29 Graph. nodes [ Graph. nodes. length - 1]. construct. neighbours = new Array (); Delček kode 3.2: Delček kode, ki doda v graf novo vozlišče na mesto miškinega klika na platnu. Ob premikanju vozlišča s klikom nanj in vlečenjem, se v strukturi posodobi lokacija tega vozlišča na platnu. Prav tako se morajo ob vlečenju posodobiti tudi vse povezave, ki imajo to vozlišče za svoje krajišče Dodajanje nove povezave Novo povezavo dodamo na platno tako, da najprej z miško kliknemo na levi strani na gumb Nove povezave, nato pa kliknemo na prvo vozlišče, ter nato še na drugo vozlišče med katerima želimo ustvariti povezavo. Prvo vozlišče se shrani v spremenljivko startingpoint, drugo pa v spremenljivko endpoint. 1 // Inicializiramo novo povezavo z zacetno in koncno lokacijo 2 Graph. lines [ Graph. lines. length ] = new Path. Line ( startingpoint. position, endpoint. position ); 3 // Shranimo si zacetno vozlisce povezave 4 Graph. lines [ Graph. lines. length - 1]. edgestart = startingpoint ; 5 // Shranimo si koncno vozlisce povezave 6 Graph. lines [ Graph. lines. length - 1]. edgeend = endpoint ; 7 // Nastavimo barvo povezave na crno 8 Graph. lines [ Graph. lines. length - 1]. strokecolor = black ; 9 // Nastavimo sirino povezave na 4 10 Graph. lines [ Graph. lines. length - 1]. strokewidth = 4; 11 }); Delček kode 3.3: Delček kode, ki doda v graf novo povezavo med izbranima vozliščema. Vsako vozlišče zase v tabeli Graph.nodes[i].construct.neighbours, kjer je i zaporedno število nekega vozlišča, hrani svoje sosede. Ob dodajanju nove povezave se doda v tabelo sosedov prvega vozlišča nov sosed z ukazom Graph.nodes[i].construct.neighbours.push(endPoint). Postopek je treba ponoviti tudi za drugo vozlišče, le da tu dodamo element startingpoint. 20

31 V naslednjih petih razdelkih se bomo lotili implementacije izbranih novih funkcionalnosti. Opisali bomo tako algoritme, s katerimi bomo rešili probleme, kot tudi kodo v programskem jeziku JavaScript, ki je osnova aplikacije z0diak. 3.2 Izpis zaporedja stopenj Za implementacijo je izmed zaželenih funkcionalnosti najlažji izpis zaporedja stopenj, zato se ji posvetimo najprej Algoritem za izračun zaporedja stopenj Algoritem za izračun zaporedja stopenj je relativno enostaven. Najprej se moramo sprehoditi čez vsa vozlišča grafa in si zapomniti njihovo število sosedov. Nato ta seznam uredimo v padajoče zaporedje, ga ločimo z vejicami in na vsaki strani obdamo z oklepaji. Tako dobimo zaporedje stopenj grafa Implementacija Implementacija zgornjega algoritma v programskem jeziku JavaScript, ki je potrebna za izpis zaporedja stopenj, je precej preprosta, zato jo navajamo v celoti. 1 // Funkcija za izracun in prikaz zaporedja stopenj grafa 2 ZaporedjeStopenj = function ( silent ) { 3 if ( Graph_loaded ) { 4 // Inicializiramo tabelo, ki bo vsabova stopnje vozlisc 5 var zapostopenj = new Array (); 6 // Shranimo si stevilo sosedov posameznega vozlisca 7 for ( var i = 0; i < Graph. nodes. length ; i ++) { 8 zapostopenj. push ( Graph. nodes [i]. construct. neighbours. length ); 9 } 10 // Sortiramo seznam od najvecjega do najmanjsega elementa 11 zapostopenj = zapostopenj. sort ( function (a, b) { return b - a; }); 12 // Inicializiramo niz za prikaz uporabniku 13 var zaporedjetext = new String (""); 14 // V niz nanizamo zaporedje stopenj, locena z vejicami 15 for ( var i = 0; i < Graph. nodes. length ; i ++) { 16 if ( zaporedjetext!= "") { 17 zaporedjetext += ", "; 18 } 19 zaporedjetext += zapostopenj [ i]; 20 } 21 // Prikazemo zaporedje stopenj uporabniku glede na parameter silent 22 if ( silent === true ) { 23 return zapostopenj 24 } 25 else { 26 document. getelementbyid ( area ). value = " Zaporedje stopenj : (" + zaporedjetext + ")."; 27 } 28 } 29 } Delček kode 3.4: Implementacija algoritma za prikaz zaporedja stopenj grafa. 21

32 3.3 Izračun in prikaz ožine grafa Ena izmed funkcionalnosti, ki so jo študentje ocenili kot zelo zaželeno, je tudi izračun in prikaz ožine grafa. Ta problem ni tako enostaven kot izračun in prikaz zaporedja stopenj grafa, kljub temu pa ga z nekaj dela lahko uženemo Algoritem za izračun ožine grafa Našel sem dva različna algoritma za iskanje najkrajšega cikla v grafu. Prvi algoritem temelji na iskanju v širino (angl. breadth-first search ali okrajšano BFS). To iskanje je implementirano z vrsto. Začnemo v nekem vozlišču grafa Γ, dodamo njegove sosede na konec v vrsto, vzamemo prvega iz vrste in postopek ponavljamo, dokler ne najdemo iskanega vozlišča ali pa ne obiščemo vseh vozlišč grafa. Časovna zahtevnost takega algoritma je O( V + E ), kjer je Γ = (V, E). Pri uporabi iskanja v širino pravzaprav iščemo vozlišče, do katerega smo od korena grafa (tj. vozlišča, v katerem smo začeli iskanje) prišli po dveh različnih poteh. Če tako vozlišče obstaja, potem smo našli cikel. Dolžino cikla izračunamo tako, da seštejemo dolžini teh dveh poti, ki povezujeta koren in najdeno vozlišče. Če je dolžina najdenega cikla krajša od do sedaj najdenih ciklov, si jo zapomnimo in iskanje nadaljujemo, dokler nismo obiskali vseh vozlišč v grafu. Če iskanje ponovimo iz vseh vozlišč grafa Γ, smo si zagotovili, da smo našli najkrajši cikel in s tem tudi ožino grafa. Časovna zahtevnost je tedaj enaka O( V E ) [9]. Drugi algoritem pa temelji na Dijkstrovem algoritmu iskanja najkrajše poti. Za vsako povezavo e E, kjer Γ = (V, E), ustvarimo graf Γ, ki je skorajda identičen grafu Γ, le da mu odvzamemo povezavo e. Torej Γ = (V, E \ {e}). Nato s pomočjo Dijkstrovega algoritma poiščemo najkrajšo pot med vozlišči, ki ju je povezovala povezava e. Če je ta pot krajša od do sedaj najdene najkrajše poti, potem si jo zapomnimo in nadaljujemo z iskanjem, dokler nismo prišli čez vse povezave v Γ. Na koncu dolžini najkrajše najdene poti prištejemo 1 za dolžino povezave, ki smo jo odstranili in tako dobimo ožino grafa Implementacija algoritma za izračun ožine grafa Za implementacijo sem si izbral prvi algoritem, ki išče s pomočjo iskanja v širino. Pseudokoda, povzeta po [9], se nahaja spodaj. function OzinaGrafa(Γ) ozina for all v V (Γ) do S R {v} P redhodnik(v) null Oddaljenost(v) 0 while R do choose x R S S {x} 22

33 R R \ {x} for all y Sosedi(x) \ {P redhodnik(x)} do if y / S then P redhodnik(y) x Oddaljenost(y) Oddaljenost(x) + 1 R R {y} else ozina min{ozina, Oddaljenost(x) + Oddaljenost(y) + 1} end if end for end while end for return ozina end function Zgornji algoritem nam vrne število, ki predstavlja ožino grafa. Velikokrat pa uporabnika zanima tudi, kako najti vsaj en najkrajši cikel v grafu. Zato bomo zgornjemu algoritmu dodali še eno malenkost. Ko najdemo neko manjšo ožino grafa, si v posebno strukturo (v tem primeru kar tabelo), zapišemo katera so tista vozlišča, ki so nam dala trenutno najkrajši cikel. Po tem, ko se algoritem izvede do konca, imamo v posebni tabeli shranjena vozlišča najkrajšega cikla, zato lahko usrezne povezave obarvamo z drugo barvo in tako uporabniku na vizualen način podamo povratno informacijo o najkrajšem najdenem ciklu. Kode zaradi njene obsežnosti v samem diplomskem delu ne bom prikazal. 3.4 Izračun in prikaz premera grafa Algoritem za izračun premera grafa Algoritem za izračun premera grafa je sledeč. Za vsako vozlišče v grafu izvedemo Dijkstrov algoritem, ki nam izračuna razdalje od izhodiščnega vozlišča do vseh ostalih vozlišč. Pregledamo razdalje in si zapomnimo največjo. Na koncu nam da najdaljša razdalja premer grafa. Vse kar še potrebujemo, je to, da obarvamo pripadajočo pot in jo s tem prikažemo uporabniku. Čeprav se zdi algoritem na prvi pogled enostaven, je implementacija vseeno netrivialna Implementacija algoritma za izračun in prikaz premera grafa V aplikaciji z0diak je graf shranjen v posebni strukturi, ki vsebuje seznama vozlišča in povezav, kot tudi njihove označbe, barve za prikaz, itd. Za izvedbo Dijkstrovega algoritma [15] pa potrebujemo sosednostno matriko. Najprej moramo torej grafovsko strukturo preoblikovati v sosednostno matriko danega grafa. Spodnji delček kode 3.5 nam naredi ravno to. 1 // Stevilo vozlisc 2 var Vno = Graph. nodes. length ; 23

34 3 // Inicializiramo sosednostno matriko tako, da v vsaki celici vsebuje vrednost neskoncno 4 var adjmatrix = new Array ( Vno ); 5 for ( var i = 0; i < Vno ; i ++) { 6 adjmatrix [i] = new Array ( Vno ); 7 } 8 for ( var i = 0; i < Vno ; i ++) { 9 for ( var j = 0; j < Vno ; j ++) { 10 adjmatrix [ i][ j] = Infinity ; 11 } 12 } // Tu preslikamo grafovsko strukturo v sosednostno matriko 15 for ( var i = 0; i < Graph. nodes. length ; i ++) { // Sprehodimo se cez vsa vozlisca 16 var node = Graph. nodes [i]. construct. vertex. content ; 17 for ( var ne = 0; ne < Graph. nodes [ i]. construct. neighbours. length ; ne ++) { // Sprehodimo se cez vse sosede tega vozlisca 18 var neighbour = Graph. nodes [i]. construct. neighbours [ne ]. vertex. content ; 19 for ( var j = 0; j < Graph. nodes. length ; j ++) { // Sprehodimo se cez vsa vozlisca, da poiscemo njegov indeks v nasi grafovski strukturi 20 var newnode = Graph. nodes [ j]. construct. vertex. content ; 21 if ( newnode == neighbour ) { 22 // Ker je graf neusmerjen, bo matrika sosednosti simetricna 23 adjmatrix [ i][ j] = 1; 24 adjmatrix [ j][ i] = 1; 25 break ; 26 } 27 } 28 } 29 } Delček kode 3.5: Preoblikovanje strukture grafa v sosednostno matriko. Sedaj, ko imamo sosednostno matriko, jo lahko brez težav podajamo Dijkstrovemu algoritmu. Za prikaz najdaljše razdalje uporabniku potrebujemo tudi objekt, v katerega bomo shranjevali do sedaj najdeno najdaljšo pot. V delčku kode 3.6 ustvarimo tak objekt in se nato sprehodimo čez vsa vozlišča grafa, iz katerih potem s pomočjo Dijkstrovega algoritma poiščemo najkrajše poti do vseh ostalih vozlišč grafa. Ko dobimo najkrajše poti, se sprehodimo čez tabelo teh poti in poiščemo najdaljšo, ter si zapomnimo, kje se pot začne in konča, kolikšna je njena dolžina in kateri so vmesni členi poti. Vse te informacije bomo na koncu podali uporabniku. 1 // Objekt, ki bo vseboval podatke o najdaljsi najkrajsi poti 2 var longestshortestpath = { 3 length : 0, 4 start : 0, 5 end : 0, 6 paths : null 7 }; 8 // Sprehodimo se cez vozlisca grafa 9 for ( var i = 0; i < Graph. nodes. length ; i ++) { 10 // Uporabimo Dijsktrov algoritem, za iskanje najkrajsih poti do ostalih vozlisc v grafu 11 var shortestpaths = shortestpath ( adjmatrix, Graph. nodes. length, i); 12 // Sprehodimo se cez vse najkrajste poti in iscemo najdaljso 13 for ( var j = 0; j < shortestpaths. pathlengths. length ; j ++) { 14 if ( shortestpaths. pathlengths [ j] > longestshortestpath. length ) { 15 // Shranimo si vse podatke, da bomo lahko pot kasneje rekonstruirali 16 longestshortestpath. length = shortestpaths. pathlengths [ j]; 17 longestshortestpath. start = shortestpaths. startvertex ; 18 longestshortestpath. end = j; 24

35 19 longestshortestpath. paths = shortestpaths ; 20 } 21 } 22 } Delček kode 3.6: Iskanje najdaljše najkrajše poti med dvema vozliščema v grafu. Ko se algoritem zaključi, dobimo dolžino najdaljše poti v grafu in tudi njene vmesne člene. Vse, kar moramo storiti sedaj, je da to pot pobarvamo, dolžino pa izpišemo v tekstovno polje pod platnom. 3.5 Preverjanje zadostnih pogojev za obstoj Hamiltonovega cikla Kot rečeno, je izmed vseh prej omenjenih izrekov za ugotavljanje hamiltonskosti grafa najmočnejši Pósev izrek, kljub temu pa sem se odločil implementirati tudi Diracov in Orejev izrek. Za preverjanje zadostnih pogojev za obstoj Hamiltonovega cikla v grafu bomo ustvarili en gumb, na katerega bodo vezane tri različne funkcije, izmed katerih prva preveri ali izrisani graf zadošča pogojem izreka Pósa, druga preveri izpolnjevanje pogojev Diracovega, tretja pa Orejevega izreka Algoritem za preverjanje pogojev izreka Pósa Izrek Pósa je sestavljen iz dveh delov. Prvi del pregleda, ali graf zadošča pogoju, da za vsak 1 k < (n 1)/2 obstaja največ k 1 vozlišč stopnje največ k, kjer je n = V. To enostavno rešimo z eno zanko. Najprej povečujemo k od 1 pa do (n 2)/2. Za vsak k bomo nato pogledali v zaporedje stopenj grafa in preverili koliko je vozlišč s stopnjo največ k. Če je takih vozlišč vsaj k, potem graf ne zadošča prvemu pogoju. V delčku kode 3.7 je podana komentirana implementacija tega algoritma. 1 // Pridobimo zaporedje stopenj ( npr [3,2,1]) 2 var zaporedjestopenj = ZaporedjeStopenj ( true ); 3 // Ga obrnemo, tako da je najmanjse stevilo na zacetku ( npr [1,2,3]) 4 zaporedjestopenj. reverse (); 5 // Spremenljivka v kateri hranimo stevilo vozlisc, katerih stopnja je najvec k 6 var stevilovozlisc = 0; 7 // Spremeljivka, ki nam na koncu algoritma pove ali graf zadosca osnovnemu pogoju izreka 8 var zadostuje = true ; 9 // Sprehodimo se cez vse k 10 for ( var k = 1; k < ( zaporedjestopenj. length - 1) / 2; k ++) { 11 // Ker imajo tabele tu nicelni indeks, od k odstejemo 1 12 // Ce najdemo kako tako vozlisce na k- tem mestu v tabeli, to pomeni da je vsaj k vozlisc stopnje manj ali enako k 13 if ( zaporedjestopenj [ k - 1] <= k) { 14 // Graf ne zadostuje osnovnemu pogoju 15 zadostuje = false ; 16 break ; 17 } 18 } Delček kode 3.7: Algoritem za preverbo osnovnega pogoja izreka Pósa. 25

36 Drugi del moramo preveriti le pod pogojem, da je n = V liho število. V tem primeru mora veljati dodatni pogoj, da obstaja največ (n 1)/2 vozlišč stopnje največ (n 1)/2. Tukaj se bomo sprehodili čez vsa vozlišča grafa in prešteli tista, katerih stopnja je največ (n 1)/2. Če je takih več kot (n 1)/2, potem graf ne zadošča dodatnemu pogoju in posledično ne zadošča pogojem izreka Pósa. Kode implementacije dodatnega pogoja za grafe lihega reda v diplomskem delu ne bomo navajali Algoritem za preverjanje pogojev Diracovega izreka Izmed vseh treh izrekov za zadostni pogoj obstoja Hamiltonovega cikla je Diracov algoritmično najmanj zahteven. Vse kar potrebujemo, da dokažemo neizpolnjevanje pogojev Diracovega izreka je vsaj eno vozlišče, katerega stopnja je manjša od polovice reda grafa. Tedaj graf ne ustreza pogojem Diracovega izreka in lahko to sporočimo uporabniku. Ker nam funkcija za izračun zaporedja stopenj le-te uredi po velikosti, je to povsem preprosto preveriti. Kode implementacije zaradi trivialnosti ne bomo navajali Algoritem za preverjanje pogojev Orejevega izreka Največ težav sem imel pri implementaciji preverjanja pogojev Orejevega izreka. Tu moramo namreč pregledati vse pare nesosednih vozlišč, sešteti njuni stopnji in pogledati ali je vsota manjša od reda grafa Γ = (V, E). Če najdemo tak par vozlišč, potem graf Γ ne zadošča pogojem Orejevega izreka in lahko to sporočimo uporabniku. Preoblikujmo zgornji opis postopka v dejanski algoritem. Najprej želimo na eleganten način pregledati vse pare vozlišč. To storimo z dvema zankama, ki gresta obe čez vsa vozlišča grafa. Prva zanka si izbere neko vozlišče v, nato pa preko druge zanke poiščemo vsa nesosednja vozlišča u, da lahko preverimo pogoj. Vendar pa bomo na ta način vsak par vozlišč primerjali dvakrat. Prvič ko bomo izbrali vozlišče v in ga preverjali skupaj z vozliščem u, in drugič, ko bomo izbrali vozlišče u in ga preverjali skupaj z vozliščem v. Da rešimo ta problem, bomo uporabili dodatno tabelo pregledanih vozlišč. Vanjo bomo shranjevali vozlišča v, izbrana v prvi zanki, ki smo jih že uporabili za preverjanje pogoja. V drugi zanki se bomo tako ob izbiri vozlišča u najprej prepričali, da v u, da u in v nista soseda in da tabela pregledanih vozlišč ne vsebuje vozlišča u. Šele če so vsi trije pogoji izpolnjeni, lahko preverimo če trditev u + v V drži za ta par vozlišč. Če ta trditev drži za vse pare vozlišč, ki jih s tem algoritmom najdemo, potem celoten graf Γ ustreza pogojem Orejevega izreka in posledično v njem obstaja Hamiltonov cikel. V delčku kode 3.8 si lahko ogledate implementacijo zgoraj opisanega algoritma v programskem jeziku JavaScript. 1 var pregledani = new Array (); 2 var vozlisca = new Array (); 3 var sosedi = new Array (); 4 5 // Napolnimo tabeli vozlisc in sosedov 6 for ( var i = 0; i < Graph. nodes. length ; i ++) { 7 vozlisca. push ( Graph. nodes [i]. construct. vertex. content ); 8 sosedi [ vozlisca [ i]] = new Array (); 9 for ( var j = 0; j < Graph. nodes [ i]. construct. neighbours. length ; j ++) { 10 sosedi [ vozlisca [i ]]. push ( Graph. nodes [i]. construct. neighbours [j]. vertex. content ); 11 } 26

37 12 } 13 document. getelementbyid ( area ). value = " Vsota poljubnega para nesosednjih vozlisc mora biti vecja ali enaka stopnji grafa, teday graf premore Hamiltonov cikel.\n"; 14 var zadosca = true ; 15 // Gremo cez vsa vozlisca grafa 16 for ( var i = 0; i < vozlisca. length ; i ++) { 17 var A = vozlisca [ i]; 18 // In nato se enkrat cez vsa vozlisca grafa 19 for ( var j = 0; j < vozlisca. length ; j ++) { 20 var B = vozlisca [ j]; 21 // Preverimo, da ne gre za isto vozlisce, da tocke B nismo ze pregledali in da A in B nista sosednji vozlisci 22 if ( A!== B && pregledani. indexof ( B) === -1 && sosedi [ A]. indexof ( B) === -1) { 23 document. getelementbyid ( area ). value += "\ nvozlisci " + A + " in " + B + " imata vsoto stopenj "; 24 // Ce vsota stopenj vozlisc A in B enaka ali vecja od stopnje grafa, potem graf ne zadosca pogojem Orejevega izreka 25 if ( sosedi [ A]. length + sosedi [ B]. length < vozlisca. length ) { 26 document. getelementbyid ( area ). value += " manjso od stopnje grafa. NI OK!"; 27 zadosca = false ; 28 } 29 else { 30 document. getelementbyid ( area ). value += " vecjo ali enako stopnji grafa. OK!"; 31 } 32 } 33 } 34 // Shranimo si ze pregledana vozlisca 35 pregledani. push (A); 36 } Delček kode 3.8: Algoritem za preverbo pogoja Orejevega izreka. 3.6 Izvoz grafa v slikovni obliki Shranjevanje platna v slikovno obliko ni algoritmično zahteven proces, zato se v podrobnosti implementacije ne bomo spuščali. Vse kar moramo namreč narediti, je uporabiti funkcijo za izvoz platna v bitno sliko in nato to sliko shraniti na uporabnikov računalnik. Na sliki 3.1 si lahko ogledate cirkulant Circ(17, {3, 8}), kot smo ga z novo funkcijo izvozili v slikovni format PNG. Ustvarjena slika ima prozorno ozadje, kar bo pripomoglo k temu, da bodo bodoče seminarske naloge študentov izgledale še bolje. 3.7 Ilustracija uporabe novih funkcionalnosti Iskanje grafa ki vsebuje Hamiltonov cikel, vendar ne zadošča pogojem izreka Diraca Kot smo že omenili, je izrek Pósa močnejši od Diracovega in Orejevega izreka. Prikazali smo tudi graf, ki zadošča pogojem izreka Pósa, ne pa tudi Diraca in Oreja. Poskusimo najti graf, ki bo zadoščal le Pósevemu in Orejevemu izreku, ne pa tudi Diracovemu. Ker tako Orejev, kot tudi 27

38 Slika 3.1: Slika grafa, ki je bila izvožena s pomočjo funkcije za izvoz grafa v slikovni obliki. Diracov izrek sledita iz izreka Pósa, se lahko osredotočimo le na ta dva izreka. Poiskati moramo torej graf, ki bo imel vsoto poljubnih dveh nesosednjih vozlišč vsaj enako stopnji grafa n, hkrati pa bo graf vseboval vsaj eno vozlišče stopnje manj od n/2. Začnimo z najmanjšim možnim grafom, ki lahko vsebuje hamiltonov cikel. To je 3-cikel. Če uporabimo funkcijo za prikaz veljavnosti izrekov vidimo, da graf izpolnjuje pogoje vseh treh izrekov. Dodajmo še eno vozlišče in ga povežimo še z dvema vozliščema (graf ne more vsebovati hamiltonovega cikla, če vsebuje vozlišče stopnje 1). Ponovno vidimo, da graf zadošča vsem trem izrekom. Dodajanje še ene povezave tega dejstva ne bo spremenilo, tako da dodajmo še eno vozlišče. To vozlišče pa lahko z obstoječim grafom povežemo na več načinov. Če želimo, da graf ne bo zadostoval pogojem Diracovega izreka, moramo obdržati vsaj eno vozlišče stopnje 2, hkrati pa more biti vsota parov nesosednjih vozlišč, vsaj 5, da bo graf zadoščal pogojem Orejevega izreka. Iz tega torej sledi, da novo dodano vozlišče povežemo z vozlišči stopnje 2, 3 in 3. Če ponovno preverimo veljavnost pogojev Oreja, Diraca in Pósa vidimo, da graf zares zadostuje le izreku Oreja in Pósa. Dobljeni graf je prikazan na sliki 3.2. Slika 3.2: Graf, ki zadošča pogojem izrekov Pósa in Oreja, ne pa tudi pogojem izreka Diraca Iskanje kletk s podano ožino in stopnjo grafa Kot rečeno je kletka v teoriji grafov regularni graf, ki ima za dano ožino najmanjše možno število vozlišč. Poskusimo poiskati nekaj grafov za manjše ožine o in stopnje s. Ker je ožina 28

39 definirana kot dolžina najkrajšega cikla, moramo začeti z o = 3 in stopnjo grafa s = 2. Za ta dva parametra hitro najdemo graf, ki ustreza zahtevam. To je 3-cikel. Povečajmo torej stopnjo grafa s na 3. Ker graf na treh vozliščih ne more vsebovati vozlišča s stopnjo večjo od 2, moramo dodati še eno vozlišče in ga povezati z vsemi tremi vozlišči v grafu. Dobili smo kletko K 4. Povečajmo sedaj željeno ožino grafa o na 4. Ustvarimo 4-cikel in poskusimo dodati čim manj vozlišč tako, da se ožina ne zmanjša, graf pa postane kubičen. Ker so kubični grafi vedno sodega reda, štiri vozlišča pa so za ožino 4 premalo, hitro spoznamo, da moramo dodati še vsa dve vozlišči. Edini smiselen način, na katerega lahko dodamo ti dve vozlišči v graf je, da ju povežemo med seboj in nato še z dvema obstoječima vozliščema ustvarimo 4-cikel. Ožina grafa je še vedno enaka 4, imamo pa sedaj 4 vozlišča stopnje 2 in le dve vozlišči zahtevane stopnje 3. Bralec bo sam dodal dve povezavi v graf in se z gumbom Ožina grafa prepričal, da z dodajanjem povezav ni zmanjšal ožine grafa. Malo pa se zalomi, ko povečamo željeno ožino grafa o na 5. Kot prej lahko najprej ustvarimo 5-cikel in začnemo dodajati na platno vozlišča. Ker moramo vsem obstoječim vozliščem zvišati stopnjo za 1, to pomeni, da moramo dodati vsaj dve vozlišči in ju povezati z grafom tako, da ne zmanjšamo njegove ožine. Dobljeni graf z oznakami je za lažje sledenje prikazan na sliki 3.3. Sedaj imamo le dve vozlišči stopnje 3, ostalim pa stopnje z dodatnimi povezavami ne moremo povečati brez da bi zmanjšali ožino, torej moramo dodati vsaj še eno vozlišče. Odločil sem se, da ga povežem z vozliščema številka 4 in 7. Na ta način nismo pokvarili ožine grafa (kar lahko bralec preveri z gumbom), smo pa povečali stopnjo dvema vozliščema. Ponovno smo primorani dodati še eno vozlišče in ga povezati z enim izmed vozlišč stopnje 2. Sam sem se odločil za povezavo z vozliščem 5, brez škode za ožino grafa pa ga lahko povežemo le še z vozliščem 6. Zadnje novo vozlišče sedaj že pričakovano povežemo z vozliščem 2 ter vozliščema 8 in 9. Z uporabo orodja Ožina grafa se prepričamo, da je ožina grafa še vedno enaka 5, z uporabo orodja Zaporedje stopenj pa se hitro prepričamo, da so vse stopnje vozlišč enake 3. Nekateri bralci ste graf že prepoznali, za ostale pa naj omenim, da smo dobili posplošeni Petersenov graf GP (5, 2), ki ima, poleg tega, da je to edina 5-kletka, še kup lepih lastnosti. Seveda smo pri zgornjem iskanju 5-kletke malce ugibali in nismo preverili vseh možnosti, a s pomočjo novih orodij v aplikaciji z0diak bi z nekaj truda lahko zadevo izpeljali povsem sistematično. Slika 3.3: Graf po tem ko smo 5-ciklu dodali dve vozlišči in ju povezali z dvema obstoječima vozliščema. 29

40 3.7.3 Iskanje največjega grafa s podano stopnjo in premerom Tu iščemo največji možen graf (v smislu števila vozlišč), ki bo imel sano stopnjo s in premer p. Obstaja zgornja meja števila vozlišč, ki jih tak graf lahko vsebuje, imenovana Moorova meja. Za s = 2 je ta meja enaka 2p 1, medtem ko je za s > 2 enaka 1 + s (s 1)p 1 s 2 [10]. Za poljubna s in p poznamo torej zgornjo mejo števila vozlišč, ki jih graf lahko vsebuje. Grafom, ki imajo število vozlišč enako Moorovi meji, rečemo Moorovi grafi. Graf s stopnjo s = 1 in premerom p = 1 ima dve med seboj povezani vozlišči. Grafu se brez povečevanja stopnje grafa ne da dodati še kakšnega vozlišča. Povečajmo si torej oba parametra za 1. Ker želimo, da imajo vsa vozlišča stopnjo dva, se lahko osredotočimo na cikle. 3-cikel ima premer enak 1, medtem ko ima 4 cikel že premer dva in tako zadošča pogojem, vendar pa nas zanima če lahko dodamo v graf še kakšno vozlišče. 5-cikel zadošča tako željeni stopnji kot tudi premeru. Če želimo tu dodati še kakšno vozlišče, ostane stopnja grafa enaka, vendar pa se premer grafa poveča na 3 in tako ne ustreza več našim željam. Poiščimo sedaj največji graf za s = 3 in p = 2. Dodajmo na platno 4 vozlišča. Eno izmed vozlišč povežimo z vsemi ostalimi (vozlišče ima sedaj stopnjo 3 in ne sme dobiti še enega soseda). Za vsako vozlišče stopnje 1 dodajmo še dve vozlišči in ju povežimo s temi vozlišči tako, da dobimo 4 vozlišča stopnje 3 in 6 vozlišč stopnje 1. Na sliki 3.4 je prikazan trenutni graf in oznake vozlišč. Če preverimo premer grafa, vidimo da je ta enak 4, torej ga moramo zmanjšati. Ob kliku na gumb Premer grafa se nam poleg izpisa premera grafa na grafu obarva tudi ena izmed poti dolžine 4 med dvema vozliščema. Če povežemo ti dve vozlišči in ponovno kliknemo na gumb, se nam obarva pot med drugima dvema vozliščema. Ta postopek nadaljujemo, dokler ni premer grafa enak 2. Če izračunamo Moorovo mejo za s = 3 in p = 2, dobimo število 10 (toliko imamo mi vozlišč v grafu), kar pomeni, da smo našli graf, ki zadošča vsem pogojem problema, hkrati pa mu ne moremo dodati še enega vozlišča, saj smo dosegli Moorovo mejo. Če bi vozlišča dobljenega Moorovega grafa malo preuredili, bi videli, da imamo na platnu zopet posplošeni Petersenov graf GP(5, 2) iz prejšnjega podrazdelka. Seveda smo tudi tukaj iskanje izvedli nekoliko nesistematično, ker pa smo našli Moorov graf, smo lahko prepričani, da se dobljenega grafa ne da izboljšati. Slika 3.4: Graf po tem ko smo vsakem izmed vozlišč 2, 3 in 4 dodali še po dva soseda. Z rdečo je predstavljena ena izmed razdalj dolžine 4, ki predstavlja premer grafa. 30

Hipohamiltonovi grafi

Hipohamiltonovi grafi Hipohamiltonovi grafi Marko Čmrlec, Bor Grošelj Simić Mentor(ica): Vesna Iršič Matematično raziskovalno srečanje 1. avgust 016 1 Uvod V marsovskem klubu je želel predsednik prirediti večerjo za svoje člane.

More information

Reševanje problemov in algoritmi

Reševanje problemov in algoritmi Reševanje problemov in algoritmi Vhod Algoritem Izhod Kaj bomo spoznali Zgodovina algoritmov. Primeri algoritmov. Algoritmi in programi. Kaj je algoritem? Algoritem je postopek, kako korak za korakom rešimo

More information

NIKJER-NIČELNI PRETOKI

NIKJER-NIČELNI PRETOKI UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA ALJA ŠUBIC NIKJER-NIČELNI PRETOKI DIPLOMSKO DELO LJUBLJANA, 2016 UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA Dvopredmetni učitelj: matematika - računalništvo ALJA

More information

APLIKACIJA ZA DELO Z GRAFI

APLIKACIJA ZA DELO Z GRAFI UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA Študijski program: MATEMATIKA IN RAČUNALNIŠTVO APLIKACIJA ZA DELO Z GRAFI DIPLOMSKO DELO Mentor: doc. dr. Primož Šparl Kandidat: Luka Jurković Somentor: asist.

More information

Matej Mislej HOMOMORFIZMI RAVNINSKIH GRAFOV Z VELIKIM NOTRANJIM OBSEGOM

Matej Mislej HOMOMORFIZMI RAVNINSKIH GRAFOV Z VELIKIM NOTRANJIM OBSEGOM UNIVERZA V LJUBLJANI FAKULTETA ZA MATEMATIKO IN FIZIKO Matematika - uporabna smer (UNI) Matej Mislej HOMOMORFIZMI RAVNINSKIH GRAFOV Z VELIKIM NOTRANJIM OBSEGOM Diplomsko delo Ljubljana, 2006 Zahvala Zahvaljujem

More information

Eulerjevi in Hamiltonovi grafi

Eulerjevi in Hamiltonovi grafi Eulerjevi in Hamiltonovi grafi Bojan Možina 30. december 006 1 Eulerjevi grafi Štirje deli mesta Königsberg v Prusiji so bili povezani s sedmimi mostovi (glej levi del slike 1). Zdaj se Königsberg imenuje

More information

AKSIOMATSKA KONSTRUKCIJA NARAVNIH

AKSIOMATSKA KONSTRUKCIJA NARAVNIH UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA Poučevanje: Predmetno poučevanje ŠPELA ZOBAVNIK AKSIOMATSKA KONSTRUKCIJA NARAVNIH ŠTEVIL MAGISTRSKO DELO LJUBLJANA, 2016 UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA

More information

Ana Mlinar Fulereni. Delo diplomskega seminarja. Mentor: izred. prof. dr. Riste Škrekovski

Ana Mlinar Fulereni. Delo diplomskega seminarja. Mentor: izred. prof. dr. Riste Škrekovski UNIVERZA V LJUBLJANI FAKULTETA ZA MATEMATIKO IN FIZIKO Matematika 1. stopnja Ana Mlinar Fulereni Delo diplomskega seminarja Mentor: izred. prof. dr. Riste Škrekovski Ljubljana, 2011 Kazalo 1. Uvod 4 2.

More information

Problem umetnostne galerije

Problem umetnostne galerije Problem umetnostne galerije Marko Kandič 17. september 2006 Za začetek si oglejmo naslednji primer. Recimo, da imamo v galeriji polno vrednih slik in nočemo, da bi jih kdo ukradel. Seveda si želimo, da

More information

UNIVERZA V LJUBLJANI FAKULTETA ZA MATEMATIKO IN FIZIKO ODDELEK ZA MATEMATIKO

UNIVERZA V LJUBLJANI FAKULTETA ZA MATEMATIKO IN FIZIKO ODDELEK ZA MATEMATIKO UNIVERZA V LJUBLJANI FAKULTETA ZA MATEMATIKO IN FIZIKO ODDELEK ZA MATEMATIKO Rok Erman BARVANJA RAVNINSKIH IN SORODNIH DRUŽIN GRAFOV Doktorska disertacija MENTOR: prof. dr. Riste Škrekovski Ljubljana,

More information

Iskanje najcenejše poti v grafih preko polkolobarjev

Iskanje najcenejše poti v grafih preko polkolobarjev Univerza v Ljubljani Fakulteta za računalništvo in informatiko Veronika Horvat Iskanje najcenejše poti v grafih preko polkolobarjev DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information

Jernej Azarija. Štetje vpetih dreves v grafih

Jernej Azarija. Štetje vpetih dreves v grafih UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO FAKULTETA ZA MATEMATIKO IN FIZIKO Jernej Azarija Štetje vpetih dreves v grafih DIPLOMSKO DELO NA INTERDISCIPLINARNEM UNIVERZITETNEM ŠTUDIJU

More information

UČNI NAČRT PREDMETA / COURSE SYLLABUS. Študijska smer Study field. Samost. delo Individ. work Klinične vaje work

UČNI NAČRT PREDMETA / COURSE SYLLABUS. Študijska smer Study field. Samost. delo Individ. work Klinične vaje work Predmet: Course title: UČNI NAČRT PREDMETA / COURSE SYLLABUS Teorija grafov Graph theory Študijski program in stopnja Study programme and level Magistrski študijski program Matematika Master's study

More information

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE. Kromatično število in kromatični indeks grafa

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE. Kromatično število in kromatični indeks grafa UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE Magistrsko delo Kromatično število in kromatični indeks grafa (The chromatic number and the chromatic index of

More information

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE. Verjetnostni algoritmi za testiranje praštevilskosti

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE. Verjetnostni algoritmi za testiranje praštevilskosti UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE Zaključna naloga Verjetnostni algoritmi za testiranje praštevilskosti (Algorithms for testing primality) Ime in

More information

UČNI NAČRT PREDMETA / COURSE SYLLABUS Predmet: Analiza 1 Course title: Analysis 1. Študijska smer Study field. Samost. delo Individ.

UČNI NAČRT PREDMETA / COURSE SYLLABUS Predmet: Analiza 1 Course title: Analysis 1. Študijska smer Study field. Samost. delo Individ. UČNI NAČRT PREDMETA / COURSE SYLLABUS Predmet: Analiza 1 Course title: Analysis 1 Študijski program in stopnja Study programme and level Univerzitetni študijski program Finančna matematika First cycle

More information

POLDIREKTNI PRODUKT GRUP

POLDIREKTNI PRODUKT GRUP UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA LUCIJA ŽNIDARIČ POLDIREKTNI PRODUKT GRUP DIPLOMSKO DELO LJUBLJANA 2014 UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA Univerzitetni študijski program 1. stopnje: Dvopredmetni

More information

SIMETRIČNI BICIRKULANTI

SIMETRIČNI BICIRKULANTI UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA GORAZD VASILJEVIĆ SIMETRIČNI BICIRKULANTI DIPLOMSKO DELO Ljubljana, 2014 UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA Dvopredmetni učitelj: matematika - računalništvo

More information

DOMINACIJSKO TEVILO GRAFA

DOMINACIJSKO TEVILO GRAFA UNIVERZA V LJUBLJANI PEDAGO KA FAKULTETA tudijski program: MATEMATIKA in RAƒUNALNI TVO DOMINACIJSKO TEVILO GRAFA DIPLOMSKO DELO Mentor: doc. dr. Primoº parl Kandidatka: Neja Zub i Ljubljana, maj, 2011

More information

Attempt to prepare seasonal weather outlook for Slovenia

Attempt to prepare seasonal weather outlook for Slovenia Attempt to prepare seasonal weather outlook for Slovenia Main available sources (ECMWF, EUROSIP, IRI, CPC.NCEP.NOAA,..) Two parameters (T and RR anomally) Textual information ( Met Office like ) Issued

More information

R V P 2 Predavanje 05

R V P 2 Predavanje 05 R V P 2 Predavanje 05 Kreiranje programskih modulov - Scripts RVP2 Kreiranje programskih modulov 1/44 Programski moduli -Scripts Možnosti: Omogočajo: Izvajanje ukazov Izvajanje logičnih operacij Ob določenih

More information

TEORIJA GRAFOV IN LOGISTIKA

TEORIJA GRAFOV IN LOGISTIKA TEORIJA GRAFOV IN LOGISTIKA Maja Fošner in Tomaž Kramberger Univerza v Mariboru Fakulteta za logistiko Mariborska cesta 2 3000 Celje Slovenija maja.fosner@uni-mb.si tomaz.kramberger@uni-mb.si Povzetek

More information

Hadamardove matrike in misija Mariner 9

Hadamardove matrike in misija Mariner 9 Hadamardove matrike in misija Mariner 9 Aleksandar Jurišić, 25. avgust, 2009 J. Hadamard (1865-1963) je bil eden izmed pomembnejših matematikov na prehodu iz 19. v 20. stoletje. Njegova najpomembnejša

More information

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA POLONA ŠENKINC REŠEVANJE LINEARNIH DIFERENCIALNIH ENAČB DRUGEGA REDA S POMOČJO POTENČNIH VRST DIPLOMSKO DELO

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA POLONA ŠENKINC REŠEVANJE LINEARNIH DIFERENCIALNIH ENAČB DRUGEGA REDA S POMOČJO POTENČNIH VRST DIPLOMSKO DELO UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA POLONA ŠENKINC REŠEVANJE LINEARNIH DIFERENCIALNIH ENAČB DRUGEGA REDA S POMOČJO POTENČNIH VRST DIPLOMSKO DELO LJUBLJANA, 2016 UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA

More information

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE. Simetrije cirkulantnih grafov

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE. Simetrije cirkulantnih grafov UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE Magistrsko delo Simetrije cirkulantnih grafov (Symmetry of circulant graphs) Ime in priimek: Maruša Saksida Študijski

More information

TOPLJENEC ASOCIIRA LE V VODNI FAZI

TOPLJENEC ASOCIIRA LE V VODNI FAZI TOPLJENEC ASOCIIRA LE V VODNI FAZI V primeru asociacij molekul topljenca v vodni ali organski fazi eksperimentalno določeni navidezni porazdelitveni koeficient (P n ) v odvisnosti od koncentracije ni konstanten.

More information

Verodostojnost in kvaliteta spletno dostopnih informacij

Verodostojnost in kvaliteta spletno dostopnih informacij Univerza v Ljubljani Filozofska fakulteta Oddelek za bibliotekarstvo, informacijsko znanost in knjigarstvo Verodostojnost in kvaliteta spletno dostopnih informacij Mentor: dr. Jure Dimec Lea Očko Katja

More information

UČNI NAČRT PREDMETA / COURSE SYLLABUS. Študijska smer Study field. Samost. delo Individ. work Klinične vaje work

UČNI NAČRT PREDMETA / COURSE SYLLABUS. Študijska smer Study field. Samost. delo Individ. work Klinične vaje work Predmet: Course title: UČNI NAČRT PREDMETA / COURSE SYLLABUS Statistika Statistics Študijski program in stopnja Study programme and level Univerzitetni študijski program Matematika First cycle academic

More information

USING SIMULATED SPECTRA TO TEST THE EFFICIENCY OF SPECTRAL PROCESSING SOFTWARE IN REDUCING THE NOISE IN AUGER ELECTRON SPECTRA

USING SIMULATED SPECTRA TO TEST THE EFFICIENCY OF SPECTRAL PROCESSING SOFTWARE IN REDUCING THE NOISE IN AUGER ELECTRON SPECTRA UDK 543.428.2:544.171.7 ISSN 1580-2949 Original scientific article/izvirni znanstveni ~lanek MTAEC9, 49(3)435(2015) B. PONIKU et al.: USING SIMULATED SPECTRA TO TEST THE EFFICIENCY... USING SIMULATED SPECTRA

More information

OPTIMIRANJE IZDELOVALNIH PROCESOV

OPTIMIRANJE IZDELOVALNIH PROCESOV OPTIMIRANJE IZDELOVALNIH PROCESOV asist. Damir GRGURAŠ, mag. inž. str izr. prof. dr. Davorin KRAMAR damir.grguras@fs.uni-lj.si Namen vaje: Ugotoviti/določiti optimalne parametre pri struženju za dosego

More information

Preverjanje optimiziranosti spletnih strani

Preverjanje optimiziranosti spletnih strani UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Boštjan Hozjan Preverjanje optimiziranosti spletnih strani DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Ljubljana, 2016 UNIVERZA V LJUBLJANI

More information

DELOVANJA GRUP IN BLOKI NEPRIMITIVNOSTI

DELOVANJA GRUP IN BLOKI NEPRIMITIVNOSTI UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA DEJAN KREJIĆ DELOVANJA GRUP IN BLOKI NEPRIMITIVNOSTI DIPLOMSKO DELO Ljubljana, 2015 UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA Dvopredmetni učitelj: matematika -

More information

Izbrana poglavja iz velikih omreºij 1. Zbornik seminarskih nalog iz velikih omreºij

Izbrana poglavja iz velikih omreºij 1. Zbornik seminarskih nalog iz velikih omreºij Izbrana poglavja iz velikih omreºij 1 Zbornik seminarskih nalog iz velikih omreºij Ljubljana, 2015 CIP Kataloºni zapis o publikaciji Narodna in univerzitetna knjiºnica, Ljubljana 123.45(678)(9.012.3) Izbrana

More information

Topološka obdelava slik

Topološka obdelava slik Univerza v Ljubljani Fakulteta za računalništvo in informatiko Fakulteta za matematiko in fiziko Matjaž Cerar Topološka obdelava slik DIPLOMSKO DELO UNIVERZITETNI INTERDISCIPLINARNI ŠTUDIJ RAČUNALNIŠTVA

More information

Vsebina Od problema do načrta programa 1. del

Vsebina Od problema do načrta programa 1. del Vsebina Od problema do načrta programa 1. del Osnovne strategije iskanja rešitev problema Načini opisovanja rešitev problema Osnovni gradniki rešitve problema Primeri Napišite postopek za kuhanje kave

More information

Matematika 1. Gabrijel Tomšič Bojan Orel Neža Mramor Kosta

Matematika 1. Gabrijel Tomšič Bojan Orel Neža Mramor Kosta Matematika 1 Gabrijel Tomšič Bojan Orel Neža Mramor Kosta 15. december 2010 Poglavje 3 Funkcije 3.1 Osnovni pojmi Preslikavam v množico R ali C običajno pravimo funkcije v prvem primeru realne, v drugem

More information

UNIVERZA V MARIBORU FAKULTETA ZA NARAVOSLOVJE IN MATEMATIKO. Oddelek za matematiko in računalništvo DIPLOMSKO DELO.

UNIVERZA V MARIBORU FAKULTETA ZA NARAVOSLOVJE IN MATEMATIKO. Oddelek za matematiko in računalništvo DIPLOMSKO DELO. UNIVERZA V MARIBORU FAKULTETA ZA NARAVOSLOVJE IN MATEMATIKO Oddelek za matematiko in računalništvo DIPLOMSKO DELO Sabina Skornšek Maribor, 2012 UNIVERZA V MARIBORU FAKULTETA ZA NARAVOSLOVJE IN MATEMATIKO

More information

Zgoščevanje podatkov

Zgoščevanje podatkov Zgoščevanje podatkov Pojem zgoščevanje podatkov vključuje tehnike kodiranja, ki omogočajo skrajšan zapis neke datoteke. Poznan program za zgoščevanje datotek je WinZip. Podatke je smiselno zgostiti v primeru

More information

Optimizacija delovanja in povečanje obiska na spletni strani

Optimizacija delovanja in povečanje obiska na spletni strani UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Jure Adlešič Optimizacija delovanja in povečanje obiska na spletni strani DIPLOMSKO DELO NA VISOKOŠOLSKEM STROKOVNEM ŠTUDIJU Mentor: doc.

More information

UČNI NAČRT PREDMETA / COURSE SYLLABUS Numerical linear algebra. Študijska smer Study field. Samost. delo Individ. work Klinične vaje work

UČNI NAČRT PREDMETA / COURSE SYLLABUS Numerical linear algebra. Študijska smer Study field. Samost. delo Individ. work Klinične vaje work Predmet: Course title: UČNI NAČRT PREDMETA / COURSE SYLLABUS Numerična linearna algebra Numerical linear algebra Študijski program in stopnja Study programme and level Univerzitetni študijski program Matematika

More information

Sistem za sledenje in analizo uporabe računalniških aplikacij

Sistem za sledenje in analizo uporabe računalniških aplikacij Univerza v Ljubljani Fakulteta za računalništvo in informatiko Dejan Mesar Sistem za sledenje in analizo uporabe računalniških aplikacij DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor: izr. prof. dr.

More information

Diskretna matematika 1 / Teorija grafov

Diskretna matematika 1 / Teorija grafov Diskretna matematika 1 / Teorija grafov 1. Osnovni pojmi Vladimir Batagelj Univerza v Ljubljani FMF, matematika Finančna matematika Ljubljana, december 2013 / februar 2008 1 / 31 Kazalo 1 2 3 4 5 6 Pajek

More information

Analogna elektronska vezja. Uvodna vaja

Analogna elektronska vezja. Uvodna vaja Analogna elektronska vezja Uvodna vaja Povzetek Namen uvodne vaje je, da študenti spoznajo orodja, ki jih bojo uporabljali pri laboratorijskih vajah predmeta Analogna elektronska vezja in sicer: podatkovne

More information

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE. Kvadratne forme nad končnimi obsegi

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE. Kvadratne forme nad končnimi obsegi UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE Zaključna naloga Kvadratne forme nad končnimi obsegi (Quadratic Forms over Finite Fields) Ime in priimek: Borut

More information

Izvedbe hitrega urejanja za CPE in GPE

Izvedbe hitrega urejanja za CPE in GPE Univerza v Ljubljani Fakulteta za računalništvo in informatiko Jernej Erker Izvedbe hitrega urejanja za CPE in GPE DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJ RAČUNALNIŠTVA IN INFORMATIKE Mentor: doc. dr. Tomaž

More information

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA SAŠO ZUPANEC MAX-PLUS ALGEBRA DIPLOMSKO DELO

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA SAŠO ZUPANEC MAX-PLUS ALGEBRA DIPLOMSKO DELO UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA SAŠO ZUPANEC MAX-PLUS ALGEBRA DIPLOMSKO DELO Ljubljana, 2013 UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA ODDELEK ZA MATEMATIKO IN RAČUNALNIŠTVO SAŠO ZUPANEC Mentor:

More information

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE Zaključna naloga (Final project paper) Grafi struktur proteinov: Uporaba teorije grafov za analizo makromolekulskih

More information

Metode rangiranja spletnih strani

Metode rangiranja spletnih strani UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE David Primc Metode rangiranja spletnih strani Diplomsko delo Ljubljana, 2015 UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE David Primc Mentor: doc. dr.

More information

Linearna regresija. Poglavje 4

Linearna regresija. Poglavje 4 Poglavje 4 Linearna regresija Vinkove rezultate iz kemije so založili. Enostavno, komisija je izgubila izpitne pole. Rešitev: Vinko bo kemijo pisal še enkrat. Ampak, ne more, je ravno odšel na trening

More information

Univerza na Primorskem. Fakulteta za matematiko, naravoslovje in informacijske tehnologije. Zaznavanje gibov. Zaključna naloga

Univerza na Primorskem. Fakulteta za matematiko, naravoslovje in informacijske tehnologije. Zaznavanje gibov. Zaključna naloga Univerza na Primorskem Fakulteta za matematiko, naravoslovje in informacijske tehnologije Boštjan Markežič Zaznavanje gibov Zaključna naloga Koper, september 2011 Mentor: doc. dr. Peter Rogelj Kazalo Slovarček

More information

Univerza v Ljubljani Fakulteta za matematiko in fiziko. Oddelek za fiziko. Seminar - 3. letnik, I. stopnja. Kvantni računalniki. Avtor: Tomaž Čegovnik

Univerza v Ljubljani Fakulteta za matematiko in fiziko. Oddelek za fiziko. Seminar - 3. letnik, I. stopnja. Kvantni računalniki. Avtor: Tomaž Čegovnik Univerza v Ljubljani Fakulteta za matematiko in fiziko Oddelek za fiziko Seminar - 3. letnik, I. stopnja Kvantni računalniki Avtor: Tomaž Čegovnik Mentor: prof. dr. Anton Ramšak Ljubljana, marec 01 Povzetek

More information

Naloge iz LA T EXa : 3. del

Naloge iz LA T EXa : 3. del Naloge iz LA T EXa : 3. del 1. V besedilo vklju ite naslednjo tabelo skupaj z napisom Kontrolna naloga Dijak 1 2 Povpre je Janko 67 72 70.5 Metka 72 67 70.5 Povpre je 70.5 70.5 Tabela 1: Rezultati kontrolnih

More information

OFF-LINE NALOGA NAJKRAJŠI SKUPNI NADNIZ

OFF-LINE NALOGA NAJKRAJŠI SKUPNI NADNIZ 1 OFF-LINE NALOGA NAJKRAJŠI SKUPNI NADNIZ Opis problema. Danih je k vhodnih nizov, ki jih označimo s t 1,..., t k. Množico vseh znakov, ki se pojavijo v vsaj enem vhodnem nizu, imenujmo abeceda in jo označimo

More information

UNIVERZA V MARIBORU EKONOMSKO-POSLOVNA FAKULTETA, MARIBOR

UNIVERZA V MARIBORU EKONOMSKO-POSLOVNA FAKULTETA, MARIBOR UNIVERZA V MARIBORU EKONOMSKO-POSLOVNA FAKULTETA, MARIBOR MAGISTRSKO DELO POSLOVNI POTENCIALI SPLETNIH ISKALNIKOV NA PODROČJU MARKETINGA BUSINESS POTENTIAL OF INTERNET SEARCH ENGINES IN MARKETING Študent:

More information

arxiv: v1 [cs.dm] 21 Dec 2016

arxiv: v1 [cs.dm] 21 Dec 2016 UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE arxiv:1612.07113v1 [cs.dm] 21 Dec 2016 Zaključna naloga (Final project paper) Odčitljivost digrafov in dvodelnih

More information

Miha Troha. Robotsko učenje in planiranje potiskanja predmetov

Miha Troha. Robotsko učenje in planiranje potiskanja predmetov UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Miha Troha Robotsko učenje in planiranje potiskanja predmetov DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor: prof. dr. Ivan Bratko Ljubljana,

More information

Izbrana poglavja iz algebrai ne teorije grafov. Zbornik seminarskih nalog iz algebrai ne teorije grafov

Izbrana poglavja iz algebrai ne teorije grafov. Zbornik seminarskih nalog iz algebrai ne teorije grafov Izbrana poglavja iz algebrai ne teorije grafov Zbornik seminarskih nalog iz algebrai ne teorije grafov Ljubljana, 2015 CIP Kataloºni zapis o publikaciji Narodna in univerzitetna knjiºnica, Ljubljana 519.24(082)(0.034.2)

More information

Mary Agnes SERVATIUS Izomorfni Cayleyevi grafi nad neizomorfnimi grupami (Isomorphic Cayley Graphs on Non-Isomorphic Groups)

Mary Agnes SERVATIUS Izomorfni Cayleyevi grafi nad neizomorfnimi grupami (Isomorphic Cayley Graphs on Non-Isomorphic Groups) UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE Matematične znanosti Študijski program 2. stopnje Mary Agnes SERVATIUS Izomorfni Cayleyevi grafi nad neizomorfnimi

More information

Distance reduction with the use of UDF and Mathematica. Redukcija dolžin z uporabo MS Excel ovih lastnih funkcij in programa Mathematica

Distance reduction with the use of UDF and Mathematica. Redukcija dolžin z uporabo MS Excel ovih lastnih funkcij in programa Mathematica RMZ Materials and Geoenvironment, Vol. 54, No. 2, pp. 265-286, 2007 265 Distance reduction with the use of UDF and Mathematica Redukcija dolžin z uporabo MS Excel ovih lastnih funkcij in programa Mathematica

More information

SLIKE CANTORJEVE PAHLJAµCE

SLIKE CANTORJEVE PAHLJAµCE UNIVERZA V MARIBORU FAKULTETA ZA NARAVOSLOVJE IN MATEMATIKO Oddelek za matematiko in raµcunalništvo Diplomsko delo SLIKE CANTORJEVE PAHLJAµCE Mentor: dr. Iztok Baniµc docent Kandidatka: Anja Belošević

More information

UČNI NAČRT PREDMETA / COURSE SYLLABUS

UČNI NAČRT PREDMETA / COURSE SYLLABUS UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Predmet: Izbrana poglavja iz diskretne matematike 1 Course title: Topics in discrete mathematics 1 Študijski program in stopnja Study programme

More information

Multipla korelacija in regresija. Multipla regresija, multipla korelacija, statistično zaključevanje o multiplem R

Multipla korelacija in regresija. Multipla regresija, multipla korelacija, statistično zaključevanje o multiplem R Multipla koelacia in egesia Multipla egesia, multipla koelacia, statistično zaklučevane o multiplem Multipla egesia osnovni model in ačunane paametov Z multiplo egesio napoveduemo vednost kiteia (odvisne

More information

UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Parcialne diferencialne enačbe Partial differential equations. Študijska smer Study field

UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Parcialne diferencialne enačbe Partial differential equations. Študijska smer Study field Predmet: Course title: UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Parcialne diferencialne enačbe Partial differential equations Študijski program in stopnja Study programme and level Magistrski

More information

Domen Perc. Implementacija in eksperimentalna analiza tehnike razvrščanja podatkov s konsenzom

Domen Perc. Implementacija in eksperimentalna analiza tehnike razvrščanja podatkov s konsenzom UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Domen Perc Implementacija in eksperimentalna analiza tehnike razvrščanja podatkov s konsenzom DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor:

More information

UNIVERZA V LJUBLJANI

UNIVERZA V LJUBLJANI UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO VREDNOTENJE KAKOVOSTI SPLETNIH PREDSTAVITEV IZBRANIH SLOVENSKIH FAKULTET Ljubljana, september 2003 MATEJA DOLNIČAR IZJAVA Študentka Mateja Dolničar

More information

JERNEJ TONEJC. Fakulteta za matematiko in fiziko

JERNEJ TONEJC. Fakulteta za matematiko in fiziko . ARITMETIKA DVOJIŠKIH KONČNIH OBSEGOV JERNEJ TONEJC Fakulteta za matematiko in fiziko Math. Subj. Class. (2010): 11T{06, 22, 55, 71}, 12E{05, 20, 30}, 68R05 V članku predstavimo končne obsege in aritmetiko

More information

JEDRSKA URA JAN JURKOVIČ. Fakulteta za matematiko in fiziko Univerza v Ljubljani

JEDRSKA URA JAN JURKOVIČ. Fakulteta za matematiko in fiziko Univerza v Ljubljani JEDRSKA URA JAN JURKOVIČ Fakulteta za matematiko in fiziko Univerza v Ljubljani Natančnost časa postaja vse bolj uporabna in pomembna, zato se rojevajo novi načini merjenja časa. Do danes najbolj natančnih

More information

Računalnik iz domin. Škafar, Maja Šafarič, Nina Sangawa Hmeljak Mentor: Vid Kocijan

Računalnik iz domin. Škafar, Maja Šafarič, Nina Sangawa Hmeljak Mentor: Vid Kocijan Računalnik iz domin Primož Škafar, Maja Šafarič, Nina Sangawa Hmeljak Mentor: Vid Kocijan Povzetek Naša naloga je bila ugotoviti kako sestaviti računalnik (Turingov stroj) iz domin in logičnih izrazov.

More information

ANALIZA SPLETNIH STRANI IN NJIHOVA UPORABNOST

ANALIZA SPLETNIH STRANI IN NJIHOVA UPORABNOST UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO ANALIZA SPLETNIH STRANI IN NJIHOVA UPORABNOST Ljubljana, september 2004 DARJA PLEVNIK IZJAVA Študentka Darja Plevnik izjavljam, da sem avtorica tega

More information

Minimizacija učne množice pri učenju odločitvenih dreves

Minimizacija učne množice pri učenju odločitvenih dreves Univerza v Ljubljani Fakulteta za računalništvo in informatiko Ivan Štajduhar Minimizacija učne množice pri učenju odločitvenih dreves Diplomska naloga Mentor: prof. dr. Ivan Bratko Ljubljana, 2001 Izjava

More information

Uporaba preglednic za obdelavo podatkov

Uporaba preglednic za obdelavo podatkov Uporaba preglednic za obdelavo podatkov B. Golli, PeF Pedagoška fakulteta UL Ljubljana 2012 Kazalo 1 Uvod 1 2 Zgled iz kinematike 2 2.1 Izračun hitrosti................................... 2 2.2 Izračun

More information

ENERGY AND MASS SPECTROSCOPY OF IONS AND NEUTRALS IN COLD PLASMA

ENERGY AND MASS SPECTROSCOPY OF IONS AND NEUTRALS IN COLD PLASMA UDK621.3:(53+54+621 +66), ISSN0352-9045 Informaclje MIDEM 3~(~UU8)4, Ljubljana ENERGY AND MASS SPECTROSCOPY OF IONS AND NEUTRALS IN COLD PLASMA Marijan Macek 1,2* Miha Cekada 2 1 University of Ljubljana,

More information

VAJE 2: Opisna statistika

VAJE 2: Opisna statistika VAJE : Opisna statistika Na računalniških vajah se za urejanje in prikazovanje statističnih podatkov uporabi statistični programski paket SPSS in podatkovna datoteka podatki.sav. NALOGE: 1. Analiza vzorčnih

More information

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE Zaključna naloga Uporaba logistične regresije za napovedovanje razreda, ko je število enot v preučevanih razredih

More information

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE. O neeksaknotsti eksaktnega binomskega intervala zaupanja

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE. O neeksaknotsti eksaktnega binomskega intervala zaupanja UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE Zaključna naloga (Final project paper) O neeksaknotsti eksaktnega binomskega intervala zaupanja (On the inexactness

More information

USING THE DIRECTION OF THE SHOULDER S ROTATION ANGLE AS AN ABSCISSA AXIS IN COMPARATIVE SHOT PUT ANALYSIS. Matej Supej* Milan Čoh

USING THE DIRECTION OF THE SHOULDER S ROTATION ANGLE AS AN ABSCISSA AXIS IN COMPARATIVE SHOT PUT ANALYSIS. Matej Supej* Milan Čoh Kinesiologia Slovenica, 14, 3, 5 14 (28) Faculty of Sport, University of Ljubljana, ISSN 1318-2269 5 Matej Supej* Milan Čoh USING THE DIRECTION OF THE SHOULDER S ROTATION ANGLE AS AN ABSCISSA AXIS IN COMPARATIVE

More information

matematika + biologija = sistemska biologija? Prof. Dr. Kristina Gruden Prof. Dr. Aleš Belič Doc. DDr. Jure Ačimovič

matematika + biologija = sistemska biologija? Prof. Dr. Kristina Gruden Prof. Dr. Aleš Belič Doc. DDr. Jure Ačimovič matematika + biologija = sistemska biologija? Prof. Dr. Kristina Gruden Prof. Dr. Aleš Belič Doc. DDr. Jure Ačimovič Kaj je sistemska biologija? > Razumevanje delovanja organizmov sistemska biologija =

More information

MICROWAVE PLASMAS AT ATMOSPHERIC PRESSURE: NEW THEORETICAL DEVELOPMENTS AND APPLICATIONS IN SURFACE SCIENCE

MICROWAVE PLASMAS AT ATMOSPHERIC PRESSURE: NEW THEORETICAL DEVELOPMENTS AND APPLICATIONS IN SURFACE SCIENCE UDK621.3:(53+54+621 +66), ISSN0352-9045 Informacije MIDEM 38(2008)4, Ljubljana MICROWAVE PLASMAS AT ATMOSPHERIC PRESSURE: NEW THEORETICAL DEVELOPMENTS AND APPLICATIONS IN SURFACE SCIENCE T. 8elmonte*,

More information

ACTA BIOLOGICA SLOVENICA LJUBLJANA 2012 Vol. 55, [t. 1: 29 34

ACTA BIOLOGICA SLOVENICA LJUBLJANA 2012 Vol. 55, [t. 1: 29 34 ACTA BIOLOGICA SLOVENICA LJUBLJANA 2012 Vol. 55, [t. 1: 29 34 Survey of the Lynx lynx distribution in the French Alps: 2005 2009 update Spremljanje razširjenosti risa v francoskih Alpah: 2005 2009 Eric

More information

Hibridizacija požrešnih algoritmov in hitrega urejanja

Hibridizacija požrešnih algoritmov in hitrega urejanja Univerza v Ljubljani Fakulteta za računalništvo in informatiko Nina Vehovec Hibridizacija požrešnih algoritmov in hitrega urejanja DIPLOMSKO DELO INTERDISCIPLINARNI UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE

More information

Baroklina nestabilnost

Baroklina nestabilnost Baroklina nestabilnost Navodila za projektno nalogo iz dinamične meteorologije 2012/2013 Januar 2013 Nedjeljka Zagar in Rahela Zabkar Naloga je zasnovana na dvoslojnem modelu baroklinega razvoja, napisana

More information

Verifikacija napovedi padavin

Verifikacija napovedi padavin Oddelek za Meteorologijo Seminar: 4. letnik - univerzitetni program Verifikacija napovedi padavin Avtor: Matic Šavli Mentor: doc. dr. Nedjeljka Žagar 26. februar 2012 Povzetek Pojem verifikacije je v meteorologiji

More information

FRAKTALNA DIMENZIJA. Fakulteta za matematiko in fiziko Univerza v Ljubljani

FRAKTALNA DIMENZIJA. Fakulteta za matematiko in fiziko Univerza v Ljubljani FRAKTALNA DIMENZIJA VESNA IRŠIČ Fakulteta za matematiko in fiziko Univerza v Ljubljani PACS: 07.50.Hp, 01.65.+g V članku je predstavljen zgodovinski razvoj teorije fraktalov in natančen opis primerov,

More information

Klemen Konič, 4. GB Tehniška gimnazija Tehniški Šolski Center Nova Gorica

Klemen Konič, 4. GB Tehniška gimnazija Tehniški Šolski Center Nova Gorica o Zaključna naloga»računalništvo«------------------------------------------ Oblikovanje in izdelava spletne strani Skripta za novice CMS sistemi ------------------------------------------ Klemen Konič,

More information

Grafi, igre in še kaj

Grafi, igre in še kaj Grafi, igre in še kaj Martin Milanič martin.milanic@upr.si Inštitut Andrej Marušič Fakulteta za matematiko, naravoslovje in informacijske tehnologije Univerza na Primorskem, Koper Matematika je kul 2016,

More information

DOSTOPNOST IN UPORABNOST SPLETNIH STRANI

DOSTOPNOST IN UPORABNOST SPLETNIH STRANI UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO JADRANKA SMILJIĆ DOSTOPNOST IN UPORABNOST SPLETNIH STRANI DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJ Mentor: DR. JANEZ DEMŠAR Ljubljana,

More information

UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Predmet: Analiza 3 Course title: Analysis 3. Študijska smer Study field ECTS

UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Predmet: Analiza 3 Course title: Analysis 3. Študijska smer Study field ECTS UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Predmet: Analiza 3 Course title: Analysis 3 Študijski program in stopnja Study programme and level Univerzitetni študijski program Matematika

More information

UČNI NAČRT PREDMETA / COURSE SYLLABUS. Študijska smer Study field. Samost. delo Individ. work Klinične vaje work

UČNI NAČRT PREDMETA / COURSE SYLLABUS. Študijska smer Study field. Samost. delo Individ. work Klinične vaje work Predmet: Course title: UČNI NAČRT PREDMETA / COURSE SYLLABUS Optimizacija Optimization Študijski program in stopnja Study programme and level Visokošolski strokovni študijski program Praktična matematika

More information

2 Zaznavanje registrske tablice

2 Zaznavanje registrske tablice Razpoznavanje avtomobilskih registrskih tablic z uporabo nevronskih mrež Matej Kseneman doc. dr. Peter Planinšič, mag. Tomaž Romih, doc. dr. Dušan Gleich (mentorji) Univerza v Mariboru, Laboratorij za

More information

ANALIZA SPLETNIH STRANI SREDNJIH ŠOL PO SLOVENIJI

ANALIZA SPLETNIH STRANI SREDNJIH ŠOL PO SLOVENIJI ŠOLSKI CENTER VELENJE ELEKTRO IN RAČUNALNIŠKA ŠOLA Trg mladosti 3, 3320 Velenje MLADI RAZISKOVALCI ZA RAZVOJ ŠALEŠKE DOLINE RAZISKOVALNA NALOGA ANALIZA SPLETNIH STRANI SREDNJIH ŠOL PO SLOVENIJI Tematsko

More information

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE Zaključna naloga Uporaba Kalmanovega filtra pri vrednotenju izbranih finančnih instrumentov (Using Kalman filter

More information

ENAČBA STANJA VODE IN VODNE PARE

ENAČBA STANJA VODE IN VODNE PARE ENAČBA STANJA VODE IN VODNE PARE SEMINARSKA NALOGA PRI PREDMETU JEDRSKA TEHNIKA IN ENERGETIKA TAMARA STOJANOV MENTOR: IZRED. PROF. DR. IZTOK TISELJ NOVEMBER 2011 Enačba stanja idealni plin: pv = RT p tlak,

More information

Multimedijska predstavitev globalne poravnave dveh nizov

Multimedijska predstavitev globalne poravnave dveh nizov Radovan Bajković Multimedijska predstavitev globalne poravnave dveh nizov Diplomsko delo Maribor, september 2011 I Diplomsko delo univerzitetnega študijskega programa MULTIMEDIJSKA PREDSTAVITEV GLOBALNE

More information

UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Predmet: Optimizacija 1 Course title: Optimization 1. Študijska smer Study field

UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Predmet: Optimizacija 1 Course title: Optimization 1. Študijska smer Study field UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Predmet: Optimizacija 1 Course title: Optimization 1 Študijski program in stopnja Study programme and level Univerzitetni študijski program Matematika

More information

Miha Strel. Integracija ogrodja Medius Vaadin Common na poslovnih portalih

Miha Strel. Integracija ogrodja Medius Vaadin Common na poslovnih portalih UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Miha Strel Integracija ogrodja Medius Vaadin Common na poslovnih portalih DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor: prof. dr. Marjan

More information

OA07 ANNEX 4: SCOPE OF ACCREDITATION IN CALIBRATION

OA07 ANNEX 4: SCOPE OF ACCREDITATION IN CALIBRATION OA07 ANNEX 4: SCOPE OF ACCREDITATION IN CALIBRATION Table of contents 1 TECHNICAL FIELDS... 2 2 PRESENTING THE SCOPE OF A CALIBRATION LABOORATORY... 2 3 CONSIDERING CHANGES TO SCOPES... 6 4 CHANGES WITH

More information

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE Zaključna naloga Prototip mobilnega čitalca registrskih tablic za preverjanje parkirnin (Prototype of mobile license

More information

Introduction of Branching Degrees of Octane Isomers

Introduction of Branching Degrees of Octane Isomers DOI: 10.17344/acsi.2016.2361 Acta Chim. Slov. 2016, 63, 411 415 411 Short communication Introduction of Branching Degrees of Octane Isomers Anton Perdih Faculty of Chemistry and Chemical Technology, University

More information

MODEL ZA OCENJEVANJE KAKOVOSTI SPLETNIH STRANI

MODEL ZA OCENJEVANJE KAKOVOSTI SPLETNIH STRANI UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA MAGISTRSKO DELO MODEL ZA OCENJEVANJE KAKOVOSTI SPLETNIH STRANI Ljubljana, avgust 2003 JAKA LINDIČ IZJAVA Študent Jaka Lindič izjavljam, da sem avtor tega magistrskega

More information

ODKRIVANJE TEMATIK V ZAPOREDJU BESEDIL IN SLEDENJE NJIHOVIM SPREMEMBAM

ODKRIVANJE TEMATIK V ZAPOREDJU BESEDIL IN SLEDENJE NJIHOVIM SPREMEMBAM UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO BLAŽ NOVAK ODKRIVANJE TEMATIK V ZAPOREDJU BESEDIL IN SLEDENJE NJIHOVIM SPREMEMBAM DIPLOMSKA NALOGA na univerzitetnem študiju Mentor: akad.

More information