analiza druŠtvenih mreŽa u deduktivnim jezicima

38
SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE V A R A Ž D I N Ivan Ivanović ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA ZAVRŠNI RAD Varaždin, 2013.

Upload: truongkhuong

Post on 31-Jan-2017

250 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

SVEUČILIŠTE U ZAGREBU

FAKULTET ORGANIZACIJE I INFORMATIKE

V A R A Ž D I N

Ivan Ivanović

ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

ZAVRŠNI RAD

Varaždin, 2013.

Page 2: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

SVEUČILIŠTE U ZAGREBU

FAKULTET ORGANIZACIJE I INFORMATIKE

V A R A Ž D I N

Ivan Ivanović

Matični broj: 36017/07–I

Studij: Poslovni sustavi

ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

ZAVRŠNI RAD

Mentor:

Doc.dr.sc. Markus Schatten

Varaždin, lipanj 2013.

Page 3: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

I

Sadržaj

1. Uvod .................................................................................... 1

2. Pregled literature .................................................................. 2

3. Teorija grafova .................................................................... 4

3.1. Pojam grafa ..................................................................................................................... 4

3.2. Planarnost grafa .............................................................................................................. 5

3.3. Usmjerenost grafa ........................................................................................................... 6

3.4. Stupanj čvora .................................................................................................................. 9

3.5. Povezivanje ................................................................................................................... 10

3.6. Ciklusi u grafu .............................................................................................................. 11

3.7. Stabla ............................................................................................................................ 13

3.8. Razapinjuća stabla ........................................................................................................ 14

3.9. Pretraživanje stabla ....................................................................................................... 14

3.10. Težinski grafovi ..................................................................................................... 16

4. Društvene mreže ................................................................ 17

4.1. Analiza mreža ............................................................................................................... 17

4.2. Kratki pregled povijesti razvoja društvenih mreža ....................................................... 17

4.3. Fenomen malog svijeta ................................................................................................. 20

5. Deduktivni jezici ................................................................ 22

5.1. XSB .............................................................................................................................. 23

5.2. Logika prvog reda ......................................................................................................... 23

6. Aplikacija .......................................................................... 25

7. Primjeri korištenja aplikacije ............................................. 30

8. Zaključak ........................................................................... 31

Abecedni popis korištene literature ....................................... 32

Prilog 1: Kod programa ........................................................ 33

Page 4: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

1

1. Uvod

Društvene mreže kakve ih danas poznajemo pojavljuju se i šire usporedno s globalnom

internetizacijom. Iako sam početak razvoja društvenih mreža datira mnogo ranije, tek

razvojem on-line servisa socijalne interakcije započinje sve veća potreba za promatranjem,

analiziranjem i vizualiziranjem takvih mreža. Danas imamo razvijenu kompletnu znanost koja

proučava podatke o korisnicima, interakcije između korisnika, kvantificira podatke, te ih

vizualizira pomoću grafova.

U ovom radu autor će prikazati analizu društvenih mreža pomoću deduktivnih jezika.

Za početak će autor opisati osnovne pojmove, koje je prijeko potrebno shvatiti kako bi

provedba analize bila dovoljno jasna. Tako rad započinje poglavljem o teoriji grafova.

Prikazani su osnovni pojmovi vezani uz samu teoriju, te pomoću njih važniji pojmovi

neposredno vezani uz samu izradu aplikacije. Glavni pojam koji svakako dolazi do izražaja je

pojam pretraživanja prvo-u-širinu (eng. breath-first search, BFS). Nakon upoznavanja s

teorijom grafova bit će prikazan kratki osvrt na povijest razvoja društvenih mreža, kako bismo

vidjeli kako razvoj mreža, tako i razvoj samih sustava za analizu istih mreža. Nakon ovog

poglavlja prelazimo na upoznavanje s poviješću razvoja logičkog programiranja, te samog

programskog jezika Prolog, odnosno njegove implementacije XSB.

Nakon prikaza teoretske pozadine autor će prikazati aplikaciju za analizu društvenih

mreža. Prvenstveno to znači objasniti od kojih se dijelova i atributa aplikacija sastoji. Nakon

opisa aplikacije, te njenih datoteka bit će prikazani primjeri korištenja iste. Time će na

realnim primjerima biti vidljiva sama analiza društvene mreže.

Page 5: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

2

2. Pregled literature

Tokom pisanja poglavlja o teoriji grafova autor se najviše oslanja na knjigu autora

K.Bogart i sur. pod naslovom Discrete mathematics for computer science iz 2005. godine.

Ovo djelo sastoji se od šest velikih poglavlja. Autori predstavljaju u prvom poglavlju teoriju

brojanja, a u drugom osnove kriptografije i teorije brojeva. U trećem poglavlju predstavljen je

pregled logike i dokaza, u četvrtom principi indukcije i rekurzije, a u petom vjerojatnosti.

Najvažnije poglavlje za ovaj rad je poglavlje 6: Grafovi. Unutar ovog poglavlja predstavljeni

su pojmovi vezani uz grafove, stabla, razapinjuća i korjenska stabla, Eulerovi i Hamiltonovi

grafovi, teorija sparivanja, te bojenje grafova. Najveću važnost unutar ovog poglavlja autoru

predstavljaju poglavlja pojmova vezanih uz grafove, te stabla, razapinjuća i korjenska stabla.

Drugo važno djelo na području teorije grafova svakako je knjiga Blaženke Divjak i

Alena Lovrenčića driskretna matematika s teorijom grafova iz 2005. godine. Ovo djelo sastoji

se od uvoda, poglavlja o matematičkoj logici, zatim poglavlje o diskretnoj matematici,

poglavlje o algoritmima, poglavlje o teoriji grafova, poglavlje o algebarskim strukturama, te

poglavlje o matematičkoj teoriji računalstva. Autoru je svakako najvažnije poglavlje o teoriji

grafova unutar kojeg se ističu dijelovi o osnovnim pojmovima vezanim uz grafove, stablima,

usmjerenim grafovima, bojenju grafova, te sparivanju unutar grafova. Autoru su od najveće

važnosti dijelovi koji opisuju osnovne pojmove vezane uz grafove, te potpoglavlje koje

opisuje stabla.

Osim prethodno predstavljenih djela autor tokom pisanja poglavlja o teoriji grafova

koristi i djelo R.Deinstel-a Graph Theory, 3rd electronic edition iz 2005. Unutar ove knjige

nalazi se potpuno opisana teorija grafova, no autor koristi najviše prvo poglavlje: Osnove.

Autor također koristi neke dijelove iz djela R.Sedgewick i K.Wayne Algorithms – fourth

edition iz 2011. Posebice se to odnosi na poglavlje 4: Grafovi, odnosno potpoglavlje o

usmjerenim grafovima.

Kada govorimo o poglavlju o društvenim mrežama autoru najviše koristi djelo M.E.J.

Newman-a Networks an Introduction, izdano 2010. godine. Djelo se sastoji od nekoliko

poglavlja. Unutar prvog poglavlja o empirijskim proučavanjima mreža autor najviše koristi

potpoglavlje o društvenim mrežama, posebice prikazujući povijest društvenih mreža, te

fenomen malog svijeta. Nadalje su u djelu prikazane osnove teorije mreža, računalni

algoritmi, mrežni modeli, te procesi na mrežama. Unutar zadnjeg dijela autor najviše koristi

poglavlje 19, opisujući prvenstveno Kleinbergov model.

Autoru je također iznimno važno istaknuti djelo P.Mika-e Social Networks and

Semantic Web. Ovo djelo sastoji se od dva osnovna dijela. Prvi dio predstavlja semantički

web, dok drugi, daleko važniji za ovaj rad predstavlja analizu društvenih mreža. Autoru

najviše koristi opis pojma analize društvenih mreža, te povijest njena razvoja, unutar drugog

poglavlja.

Page 6: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

3

Na ovom je području također važno napomenuti djelo F.Karinthy-ja Everything is

different iz 1929. godine. Unutar ovog djela autor koristi članak Chains-Links. Sadržaj ovog

članka predstavlja začetke znanosti o društvenim mrežama.

Također je važno djelo J.Morena Who shall survive iz 1953. godine. Unutar ovog

djela Moreno prikazuje osnove Sociometrije, te svoja istraživanja. Autoru je od najveće

važnosti prva knjiga djela pod naslovom Sustav sociometrije.

Tokom pisanja poglavlja o deduktivnim jezicima autor za prikaz povijesti razvoja

koristi internetske izvore podataka, od kojih je posebno važno istaknuti djelo Rosebrugh.R.

dostupno na adresi http://www.mta.ca/~rrosebru/oldcourse/371199/prolog/history.html

(dostupno 28.05.2013.). Unutar ovog djela nalazimo kratki opis povijesti razvoja

programskog jezika Prolog, njegovog interpretera i prevodioca koda.

U drugom dijelu poglavlja nalazimo prikaz logike prvog reda, za što autor koristi djelo

M.Vukovića Matematička logika. Ovo djelo sastoji se od dva velika poglavlja. Prvo poglavlje

objašnjava klasičnu logiku sudova, dok drugo poglavlje, autoru važnije predstavlja logiku

prvog reda. Ovo poglavlje prikazuje teoritsku pozadinu i definicije vezane uz logiku prvog

reda, te primjere te teorije.

Tokom izrade programskog koda najviše koristi autor ima od XSB priručnika,

dostupnog na web stranici http://xsb.sourceforge.net/manual1/ (dostupno 03.06.2013.).

Priručnik služi kao potpora programerima, opisujući temeljne pincipe uporabe XSB-a. Unutar

priručnika opisana je okolina u kojoj radimo, odnosno izgled i rad interpretera i prevodioca.

Nadalje su prikazane osnove rada, tj. način pisanja programskog koda. U drugom dijelu

priručnika su objašnjeni načini rada s dodacima, odnosno bibliotekama i paketima, koje po

potrebi programer može uključivati u program.

Page 7: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

4

3. Teorija grafova

3.1. Pojam grafa

K.Bogart, C.Stein i R.L.Drysdale u djelu Discrete mathematics for computer science

(2005:310) navode sljedeće:

Graf se sastoji od niza čvorova (eng. vertex, node) i niza bridova (eng. edge) i

ima svojstvo da svaki brid posjeduje dva (nije obvezno da su različiti) čvora.

Te čvorove, s kojima je brid povezan nazivamo krajnjim točkama (eng.

endpoints). Kažemo kako se brid pridružuje (eng. join) krajnjim točkama, te

kako su dvije krajnje točke susjedne (eng. adjacent) ako im je pridržen isti brid.

Ukoliko je čvor krajnja točka brida, tada kažemo kako su brid i čvor

incidentni.

Definicija 1: Graf je uređeni par G = (V, E). V predstavlja skup čvorova, dok E

predstavlja skup bridova grafa za koje vrijedi E V x V. Elementi E su dvoelementni

podskupovi od V. Također treba uzeti u obzir kako vrijedi E ∩ V = 0 (R.Diestel; Graph

Theory; Electronic edition; 2005:2, B.Divjak i A.Lovrenčić; Diskretna matematika s teorijom

grafova; 2005:193). Osnovne primjere grafova možemo vidjeti na slici 3.1.

Slika 3.1: Primjeri grafova

Definicija 2: Za par čvorova u i v kažemo da su susjedni ako postoji brid e koji ih

povezuje. Kažemo kako je brid e incidentan čvorovima u i v.

Bridovi e i f su susjedni ukoliko imaju barem jedan zajednički čvor (B.Divjak i

A.Lovrenčić; Diskretna matematika s teorijom grafova; 2005:194). Primjeri susjednih

čvorova i susjednih bridova ilustrirani su na slici 3.2.

Page 8: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

5

Slika 3.2: Primjeri susjednih čvorova i susjednih bridova

B.Divjak i A.Lovrenčić u djelu Diskretna matematika s teorijom grafova (2005:194-

196) navode sljedeće:

Brid koji je incidentan samo s jednim jedinim čvorom naziva se petlja.

Graf G je konačan ako su oba skupa V i E konačni (V predstavlja skup čvorova

grafa, dok E predstavlja skup bridova grafa).

Graf je jednostavan ukoliko ne sadrži petlje i ukoliko ne postoje dva brida koji

spajaju isti par čvorova.

Pseudograf je graf koji može sadržavati petlje.

Jednostavni graf, u kojem je svaki par vrhova spojen jednim bridom nazivamo

potpuni graf (eng. complete graph).

Bipartitivni graf (eng. bipartite graph) je graf za čiji skup čvorova postoji

particija V = {X, Y} dva skupa X i Y, tako da svaki brid ima jedan kraj u X, a

drugi u Y.

Potpuni bipartitivni graf je bipartitivni graf kod kojeg je svaki vrh iz X spojen

sa svakim vrhom u Y točno jednim bridom.

Stupanj (valencija) čvora v je broj d(v) bridova of G incidentnih sa v.

3.2. Planarnost grafa

Definicija 3: Graf G je planaran (ravninski) ako se grafički može predočiti tako da se

bridovi sijeku samo u čvorovima (B.Divjak i A.Lovrenčić; Diskretna matematika s teorijom

grafova; 2005:194). Ovakav graf prikazan je na slici 3.3.

Ukoliko graf ne možemo preodčiti tako da se bridovi sijeku samo u čvorovima,

odnosno ukoliko imamo slučaj da se bridovi sijeku, a da njihovo sjecište nije čvor, tada

govorimo o neplanarnom grafu. Primjer takvog grafa imamo na slici 3.4.

Page 9: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

6

Slika 3.3: Primjer planarnog grafa

Slika 3.4: Primjer neplanarnog grafa

Također je potrebno naglasiti, kada govorimo o grafovima u svrhu analiziranja

društvenih mreža, kako tada govorimo o kompleksnim grafovima, ponekad s tisućama

korisnika i interakcijama između njih. Tada najčešće nije moguće mrežu vizualizirati potpuno

planarno. U tom slučaju planarnost ne gledamo strogo teoretski, pa kažemo da ipak postoji

mogućnost planarnosti takvog grafa.

3.3. Usmjerenost grafa

U slučaju kada društvene mreže promatramo putem grafova, treba reći kako nam

najčešće čvorovi predstavljaju korisnike, dok bridovi prestavljaju veze (eng. relationships)

između korisnika. Simetrija veze predstavlja postojanost veza između između pojedina dva

čvora a i b, te ujedno i postojanost simetrične veze između b i a.

Pomoću simetrije veze dolazimo do pojma usmjerenosti grafa. Neusmjereni grafovi

sadrže svojstvo simetrije veze. S druge strane imamo usmjerene grafove (eng. directed

graphs; digraph) kod kojih svojstvo simetrije veze nije nužno (K.Bogart, C.Stein i

Page 10: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

7

R.L.Drysdale;Discrete mathematics for computer science;2005:311). Primjer usmjerenog

grafa imamo na slici 3.5.

R.Sedgewick i K.Wayne u djelu Algorithms – fourth edition (2011) navode sljedeće:

Usmjereni graf (digraph) je skup čvorova i kolekcija usmjerenih bridova takva

da svaki brid spaja određeni par čvorova. Kažemo kako usmjereni brid

pokazuje od (eng. Points from) prvog čvora u paru i pokazuje na (eng. Points

to) drugi čvor u paru. Koristimo oznake od 0 do V-1 u V-čvornom grafu.

Slika 3.5: Primjer usmjerenog grafa

Definicija 4: Put (eng. path) u grafu je izmjeničan slijed čvorova i bridova, koji

započinje i završava s čvorem, svaki brid povezuje čvor sa sljedećim čvorem u nizu, te niti

jedan čvor se ne pojavljuje u nizu više od jednom.

Ukoliko je u nekom putu prvi čvor a, a poljednji čvor d, tada kažemo kako imamo put

od a do d.

Primjer puta: A {A, B} B {B, C} C {C, D} D. Ovakav primjer ilustriran je na slici

3.6.

Slika 3.6: Primjer puta u grafu

Page 11: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

8

Duljina puta (eng. lenth of a path) je zbroj bridova koji se nalaze u putu. Duljina

najkraćeg puta između čvorova u grafu naziva se udaljenost (eng. distance) između čvorova.

Šetnja (eng. walk) u grafu je put kod kojega ne vrijedi uvjet da se jedan čvor ne

pojavljuje u nizu više od jednom. Duljina šetnje je broj bridova koje sadrži

Kažemo da ukoliko postoji šetnja između dva odabrama čvora a i d u grafu G, tada

postoji i put između čvorova a i d u grafu G (K.Bogart, C.Stein i R.L.Drysdale;Discrete

mathematics for computer science;2005:312).

Page 12: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

9

3.4. Stupanj čvora

Definicija 5: Stupanj čvora u grafu je broj koji govori koliko je puta čvor incidentan s

bridovima grafa. Stupanj čvora x je broj bridova između čvora x i drugih čvorova plus

dvostruki broj petlji na čvoru x.

Ukoliko pretpostavimo kako graf ima konačan broj bridova, tada je suma stupnjeva

čvorova jednaka dvostrukom broju bridova (K.Bogart, C.Stein i R.L.Drysdale;Discrete

mathematics for computer science;2005:313).

Na slici 3.7. vidimo razlike u stupnjevima čvora. Na slici a vidimo kako čvor A ima

stupanj 1, jer je incidentan samo s jednim bridom. Na slici b vidimo da čvor A ima stupanj 2,

na slici c ima stupanj 3, dok na slici d ima stupanj 4.

a b

c d

Slika 3.7: Primjeri stupnjeva čvora

Page 13: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

10

3.5. Povezivanje

K.Bogart, C.Stein i R.L.Drysdale u djelu Discrete mathematics for computer science

(2005:315) navode sljedeće:

Za graf kažemo kako je povezan ukoliko za svaki par čvorova grafa možemo

pronaći put između njih. Jednako tako, ukoliko u grafu postoji jedan ili više

čvorova za koje ne možemo pronaći put s ostalim čvorovima, tada kažemo kako

je graf nepovezan. Ukoliko imamo samo jedan čvor kojeg ne možemo povezati

s ostalim čvorovima u grafu, tada taj čvor nazivamo izolirani čvor (eng.

isolated vertex). Dva su čvora u grafu povezana ukoliko postoji put između

njih.

Na slici 3.8. možemo vidjeti primjere povezanih grafova, dok na slici 3.9. vidimo

primjer nepovezanog grafa. Na slici 3.10. vidimo imamo poseban slučaj nepovezanog grafa,

kod kojeg je od ostatka grafa izolirana jedna točka, odnosno točka G. Takav slučaj zovemo

izolirani čvor.

Slika 3.8: Primjeri povezanih grafova

Slika 3.9: Primjer nepovezanog grafa

Page 14: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

11

Slika 3.10: Primjer izoliranog čvora; čvor G je izoliran

3.6. Ciklusi u grafu

B.Divjak i A.Lovrenčić u djelu Diskretna matematika s teorijom grafova (2005:200)

navode sljedeće:

Šetnja u grafu G je netrivijalni konačan niz, čiji u članovi naizmjence čvorovi i

bridovi. Čvorovi su na početku i na kraju šetnje.Čvorovi koji nisu ni na početku

ni na kraju šetnje nazivaju se unutarnji čvorovi. Duljina šetnje k je broj

bridova u šetnji. Ako su svi čvorovi u šetnji različiti, šetnju nazivamo put.

Šetnja je zatvorena ako joj se podudaraju početak i kraj.

Zatvorenu šetnju kod koje su početak i unutrašnji čvorovi različiti, zovemo

ciklus (eng. cycle). Ako ciklus ima r različitih bridova i r različitih čvorova,

govorimo o ciklusu duljine r ili r-ciklusu.

Page 15: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

12

Slika 3.11: Primjer ciklusa u grafu

Na slici 3.11. vidimo primjer ciklusa u grafu. Očigledno je kako slika ne sadrži jedan

određen ciklus nego više njih, pa ćemo navesti samo neke:

Ciklus prvi: A a B b C c D d A

Ciklus drugi: A a B j F e E i A

Ciklus treći: A d D l H h E i A

Ciklus četvrti: E e F f G g H h E

(napomena: bridovi u grafu su označeni malim slovima a, b, c, d, e, f, g, h, i, j, k i l, dok su

čvorovi označeni velikim slovima A, B, C, D, E, F, G i H).

Page 16: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

13

3.7. Stabla

B.Divjak i A.Lovrenčić u djelu Diskretna matematika s teorijom grafova (2005:214)

navode sljedeće:

Pojam stabla u 19. Je stoljeću prvi uveo Arthur Cayley proučavajući posebne

klase grafova, koji prikazuju određene kemijske spojeve. Ti su grafovi imali

jedno važno svojstvo: nisu sadržavali cikluse. Stabla imaju primjenu u

rješavanju problema kao što je povezivanje udaljenih lokacija mrežom.

Definicija 6: Stablo (eng. tree) je povezani graf koji ne sadržni niti jedan ciklus, dok

je šuma (eng. forest) graf koji ne sadrži niti jedan ciklus, ali nije nužno da je taj graf povezan.

Čvor se naziva listom (eng. leaf) stabla T = (V, E) ako ima jednog susjeda (K.Bogart, C.Stein

i R.L.Drysdale;Discrete mathematics for computer science;2005:317, R.Diestel; Graph

Theory; Electronic edition; 2005:13, B.Divjak i A.Lovrenčić; Diskretna matematika s

teorijom grafova; 2005:215).

Primjeri stabala, opisanih u prethodnoj definiciji ilustrirani su na slici 3.12., dok je

primjer šume prikazan na slici 3.13.

Slika 3.12: Primjeri stabala

Slika 3.13: Primjer šume

Page 17: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

14

Nadalje K.Bogart, C.Stein i R.L.Drysdale u djelu Discrete mathematics for computer

science (2005:318) navode sljedeće:

Postoji točno jedan put između svakog para čvorova u stablu.

Ukoliko iz seta bridova stabla izbacimo jedan brid dobivamo graf s dvije

povezane komponente, od kojih je svaka stablo.

Stablo s v čvorova ima v – 1 bridova.

3.8. Razapinjuća stabla

K.Bogart, C.Stein i R.L.Drysdale u djelu Discrete mathematics for computer science

(2005:323) navode sljedeće:

Stablo kojemu je skup bridova podskup skupa bridova grafa G nazivamo

razapinjuće stablo od G, ukoliko stablo ima jednak skup čvorova kao i graf G.

Svaki konačan povezan graf ima razapinjuće stablo.

Graf može imati više razapinjućih stabala.

3.9. Pretraživanje stabla

Prilikom analize društvenih mreža, za koje je ranije rečeno kako ih promatramo

vizualno putem grafova, dolazimo do problema pretraživanja takvih grafova, odnosno mreža.

Pretraživanje nam je prijeko potrebno kako bismo odredili tko su sudionici mreže, kako su

povezani, kolika je interakcija. Na temelju tih podataka provodimo daljnje analize tih mreža.

Prethodno navedeni opisi i definicije dovode nas do mogućnosti rješenja ovog problema.

Ukoliko imamo zadatak pronaći sve čvorove grafa, prevenstveno je bitno odrediti početni

čvor, odnosno korijen. Smisao pretrage je da od odabranog čvora krenemo, te prelazeći

bridovima grafa posjetimo sve čvorove tog grafa. Važno je napomenuti kako tokom takve

pretrage i čvorovi i bridovi mogu biti posjećeni više nego jednom. Time dakle tvorimo

razapinjuće stablo odabranog grafa. Za ovaj postupak razvijene su dvije osnovne strategije.

Prva od njih je pretraga koja čim je dostupno prelazi na novi čvor, odnosno čvor nove razine.

Takvu pretragu nazivamo pretraga prvo u dubinu (eng. depth-first search) i označavamo

kraticom DFS. Suprotna metoda je metoda kod koje pretražujemo sve čvorove iste razine, te

nakon što završimo pretragu određene razine prelazimo na sljedeću razinu. Takvu pretragu

nazivamo pretraga prvo u širinu (eng. breadth-first search) i označavamo kraticom BFS. Na

Page 18: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

15

slici 3.14. prikazan je redosljed prema kojem metoda DFS pretražuje stablo, dok na slici 3.15

vidimo kojim redosljedom metoda BFS pretražuje isto stablo.

Slika 3.14: Pretraživanje stabla DFS metodom

Slika 3.15: Pretraživanje stabla BFS metodom

Page 19: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

16

3.10. Težinski grafovi

Definicija 7: Težinski (eng. weighted) graf je graf G čijem je svakom bridu pridružen

nenegativni broj w(e), kojeg zovemo težinom brida e (B.Divjak i A.Lovrenčić; Diskretna

matematika s teorijom grafova; 2005:208).

Najbolji primjer primjene ovakvih grafova su grafovi prometnica. Ukoliko dakle

imamo graf kod kojeg su imena gradova tvore skup čvorova grafa, a prometnice koje

povezuju te gradove tvore skup bridova, tada bi težina brida iznosila udaljenost između

pojedina dva grada u kilometrima. Najčešće je zadatak i svrha takvih grafova pronalazak

minimalne udaljenosti između pojedinih čvorova. Primjer težinskog grafa imamo na slici

3.16.

Slika 3.16: Primjer težinskog grafa

Page 20: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

17

4. Društvene mreže

Definicija 8: Društvene mreže su mreže u kojima su čvorovi grafa ljudi ili ponekad

grupe ljudi, dok bridovi predstavljaju neku formu socijalne interakcije između tih ljudi, kao

što je prijateljstvo (M.E.J. Newman; Networks an Introduction; 2010:36).

4.1. Analiza mreža

P.Mika u svom djelu Social networks and the semantic web (2007:27-32) navodi

sljedeće:

Analiza društvenih mreža (eng. social network analysis, SNA) je proučavanje

društvenih odnosa nad skupom sudionika. Glavna razlika između analize

mreža i ostalih pristupa društvenim znanostima je fokus na odnose između

sudionika, radije nego na atribute individualnih sudionika. Analiza mreža

uzima u obzir globalni pregled društvenih struktura temeljeno na vjerovanju

kako se tipovi i uzorci odnosa pojavljuju kroz individualnu povezanost, te kako

prisutnost (ili izostanak) takvih tipova i uzoraka ima značajan utjecaj na mrežu

i njene sastavne dijelove. Mrežna struktura pruža mogućnosti i postavlja

ograničenja individualnim korisnicima definirajući protok resursa

(materijalnih ili nematerijalnih) kroz mrežu.

Analiza društvenih mreža predstavlja drukčiji pristup društvenim fenomenima i

ponajprije zahtjeva novi set koncepata i nove metode za prikupljanje podataka

i analizu. Analiza mreža osigurava jezik za opisivanje društvenih struktura,

pruža formalne modele koji sadrže karakteristike svih (društvenih) mreža i

skup metoda primjenjivih za analizu mreža općenito. Koncepti i metode analiza

mreža su temeljeni na formalnom opisu mreža kao grafova.

4.2. Kratki pregled povijesti razvoja društvenih mreža

Premda u današnje vrijeme kada gledamo pojam društvenih mreža pomislimo prvo na

online servise socijalne interakcije poput Facobook-a, MySpace-a ili Twitter-a, priča o

nastanku i razvoju samih društvenih mreža ne započinje s razvojem Interneta. Naime razvoj

samog pojma datira početkom dvadesetog stoljeća, kada znanstvenici, u okviru sociologije

kao znanosti započinju s promatranjem i opisivanjem ponašanja ljudi u nekakvim skupinama.

Začetke same znanosti o društvenim mrežama pripisujemo Frigyes Karinthyju. 1929.

Karinthy u svom djelu Everything is Different objavljuje priču Chains-Links. Unutar ove

priče Karinthy se osvrće na smanjenje svijeta, odnosno nešto što bismo danas nazvali

globalizacijom. Tako na samom početku djela navodi sljedeće: „Planet Zemlja nikad nije bio

Page 21: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

18

tako sičušan kao danas. Smanjio se – relativno govoreći naravno, zbog ubrzavajućeg pulsa

fizičke i verbalne komunikacije.“(F.Karinthy; Everything is Different;1929). U nastavku

teksta Karinthy objašnjava kako zbog razvoja industrije i komunikacija možemo saznati sve o

svakomu i doći jednostavno do svakoga, odnosno stupiti u kontakt. Promatrajući stvari sa

socijalnog aspekta Karinthy postavlja tezu o pet poznanika. Naime, on tvrdi kako

posredstvom pet osoba može doći do bilo kojeg Nobelovca. Također kao drugi primjer, ne

tako kontroverzan za to vrijeme navodi kako posredstvom pet poznanika može doći do bilo

kojeg radnika u tvornici automobila Ford.

U daljnjem tekstu ćemo vidjeti kako upravo ovim izlaganjem Karinthy postavlja

temelje za istraživanje društvenih mreža, a posebice istraživanje fenomena malog svijeta,

kojim se tek tridesetak godina nakon ovog djela bavi Stanley Milgram.

Pravim osnivateljem područja društvenih mreža smatra se Jacob Moreno, rumunjski

psihijatar.

M.E.J. Newman u djelu Networks an Introduction (2010) navodi sljedeće:

Jacob Moreno tridesetih godina dvadesetog stoljeća postaje zainteresiran za

dinamiku socijalnih interakcija između grupa ljudi. Na medicinskoj

konferenciji u New Yorku u ožujku 1933. Predstavlja rezultate niza studija koje

danas smatramo prvim studijima na području analize socijalnih mreža. Godinu

dana kasnije Moreno objavljuje knjigu pod nazivo Who shall survive u kojoj

objavljuje temelje sociometrije koja kasnije postaje poznatija kao analiza

socijalnih mreža. Moreno naziva svoje dijagrame sociogrami, koje mi danas

jasno prepoznajemo kao mreže.

Sociometrija je matematička studija psiholoških kvaliteta populacija. To je

ekspeimentalna tehnika koja nastaje kao rezultat primjene kvantitativnih metoda. Postiže se

putem metoda koje zadiru u evoluciju i organizaciju grupe, te položaja koje individualci

zauzimaju unutar grupa (J.Moreno; Who shall Survive; 1953:51).

U svom istraživanju Moreno koristi i promatra interakcije učenika i učenica unutar

razreda. Unutar svih generacija, od djece vrtićke dobi do osmog razreda svakom djetetu daje

zadatak izabrati prijatelja s kojim bi želio sjediti i družiti se unutar istog razreda. Na temelju

rezultata ovih upita Moreno provodi analizu podataka. Dobivenim podacima kreira

sociograme, na kojima se vide interakcije između učenika koje nisu vidljive bez analize.

Moreno uočava razlike između pojedinih učenika. Dok su neki izolirani, neki su formirali

veze, parove, trokute ili lance, a neki se čak uzdigli u zvijezde. Također Moreno uočava kako

je razlika jednako vidljiva i ukoliko promatramo interakcije različitih generacija. Tako je

vidljivo da se uvelike razlikuju sociogrami djece u vrtiću, djece u trećem i djece u sedmom

razredu osnovne škole. Struktura vrtića prikazana je na slici 4.1., struktura trećeg razreda

osnovne škole prikazana je na slici 4.2., a struktura sedmog razreda osnovne škole prikazana

je na slici 4.3. (napomena: slika 4.1. preuzeta je iz djela J.Morena Who shall Survive (1953)

sa stranice 153; slika 4.2. iz istog djela sa stranice 156; slika 4.3. iz istog djela sa stranice

Page 22: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

19

160). Na slikama možemo primjetiti dvije vrste čvorova. Trokuti predstavljaju dječake, dok

kružnice predstavljaju djevojčice.

Slika 4.1: Struktura vrtića

Slika 4.2: Struktura trećeg razreda osnovne škole

Slika 4.3: Struktura sedmog razreda osnovne škole

Page 23: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

20

4.3. Fenomen malog svijeta

Ranih pedesetih godina dvadesetog stoljeća matematičar Manfred Kochen i politolog

Ithiel de Sola Pool objavljuju matematički rukopis Contact and Influence. 1978. ponovno

objavljuju prošireno izdanje istog djela, koje je i danas dostupno. U svom djelu ova dvojica

znanstvenika postavljaju temelje eksperimenta malog svijeta, oslanjajući se na Karinthy-eve

zaključke o malom svijetu. Po prvi put se bave istraživanjem stupnja čvora u mreži.

Također u ovom djelu Kochen i Pool postavljaju pitanja o interakcijama korisnika

mreže. Pitanje glasi koliko je vjerojatno da se dva korisnika mreže ukoliko ih odaberemo

nasumično poznaju? Ukoliko se pokaže da se korisnici ne poznaju, tada se postavlja pitanje

koliko je vjerojatno da imaju zajedničkog poznanika ili ukoliko to nije jedna osoba, koliki je

najmanji lanac poznanika putem kojih možemo doći od jedne osobe do druge?

Šezdesetih godina psiholog Stanley Milgram radi na svom eksperimentu malog

svijeta. On postaje zaokupljen kvantificiranjem uobičajene udaljenosti između sudionika

mreže. Na temelju eksperimenta saznajemo kako je ta udaljenost poprilično mala za većinu

čvorova u većini mreža. Naravno, za geodetsku udaljenost kažemo kako je to najmanji broj

veza koje je potrebno prijeći kako bismo stigli od jednog čvora u mreži do drugog. Milgram je

htio testirati ove teze u realnim okolnostima, u realnom svijetu.

Eksperiment započinje tako što Milgram prvenstveno bira željenu udaljenost. Za

početnu lokaciju bira nasumično ljude iz telefonskog imenika u gradu Omaha, u državi

Nebraska. Za cilj uzima prijatelja koji živi u Bostonu, država Massachusetts. Važno je

napomenuti kako je udaljenost ova dva grada veća od tisuću kilometara i predstavlja

udaljenost, kako geografsku, tako i sociološku. Milgram u Omahu nasumično šalje 96 paketa,

sa službenom porukom institucije u kojoj radi, Harvard. Također paket sadrži „putovnicu“, za

koju ljudi dobivaju instrukcije kako je treba poslati u Boston. Jedine informacije koje su

navedene o cilju su njegovo ime, adresa i njegovo zanimanje kao broker. Onima koji su dobili

pakete nije dozvoljeno da iste jednostavno pošalju na adresu, nego im je rečeno kako ih

trebaju poslati nekom drugom, za koga smatraju kako bi mogao imati najveće šanse da pozna

primatelja. Čitav postupak takvog prosljeđivanja putovnice odgovara kretanju po bridovima

mreže.

Rezultat ovog eksperimenta bilo je dokazivanje kako se može po lancu poznanika doći

od pošiljatelja do primatelja. Od 96 prvotno poslanih putovnica njih 18 je pronašlo svoj cilj.

Iako se ovo čini kao mala brojka, kasniji pokušaji ponavljanja eksperimenta su pokazali kako

je ustvari nevjerojatno velika. Treba napomenuti kako je Milgram od svih primatelja tražio da

zabilježe put kojim se kretala putovnica, odnosno od koga su je primili i kome je šalju.

Analizirajući rezultate Milgram dobiva prosječnu udaljenost od 5,9 koraka. Time se dokazuje

teza šest stupnjeva razdvajanja, odnosno kako je između bilo koje dvije osobe na svijetu šest

koraka ili šest poznanika. Svakako treba uzeti u obzir mogućnosti kako cilj eksperimenta,

Page 24: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

21

broker možda nije dovoljno dobar uzorak ili činjenica da su sve putovnice poslane u jedan

grad.

Milgram analizom svih putovnica spoznaje još jednu zanimljivost. Naime, sve

putovnice koju su stigle do brokera su stigle putem samo tri njegova prijatelja. Time Milgram

definira postojanje superzvijezda u mreža, odnosno čvorova visoke integracije.

Na temelju ovog eksperimenta brojni znanstvenici kasnije temelje svoja istraživanja.

Najpoznatiji je među njima je Jon Kleinberg. On na temelju Milgramovog eksperimenta

donosi zaključke kako putevi kojima su se kretala pisma, odnosno putovnice u eksperimentu

nisu najkraći, ali svakako je zaslužna ljudska sposobnost da pronađu taj put. Na temelju toga

nastaje Kleinberg-ov model za prosljeđivanje poruka. On definira kako čvorovi u mreži od

pošiljatelja do primatelja tvore prsten, kojim se poruka može kretati. Također objašnjava kako

bridovi koji povezuju sve čvorove unutar mreže čine najduži put, a kraći putevi su prečice

unutar samog prstena mreže (M.E.J. Newman; Networks an Introduction; 2010:715).

Page 25: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

22

5. Deduktivni jezici

Logičko programiranje je primjena matematičke logike u računalnom programiranju.

U računalnom programiranju razlikujemo četiri osnovna koncepta programskih jezika. Tako

imamo imperativne, deklarativne, funkcionalne (koje smatramo podskupom deklarativnih) i

objektno orjentirane jezike. Logičko programiranje pripada deklarativnom konceptu pristupa

programiranju, iako programski jezik Prolog sadrži pojedine elemente proceduralnog

programiranja. Logičko programiranje se temelji na logici prvog reda, a jezici poput Prologa i

Dataloga u potpunosti implementiraju logiku prvog reda.

Prolog (naziv programskog jezika predstavlja kraticu Programming in Logic, odnosno

logičko programiranje) je deklarativan programski jezik opće svrhe temeljen na logici prvog

reda i formalnoj logici. Prolog nastaje kasnih šezdesetih i ranih sedamdesetih godina na

sveučilištu Aix-Marseille. Tvorac jezika je Alain Colmerauer. Alain Colmerauer i Phillipe

Roussel u suradnji s Robertm Kowalskim kreiraju dizajn Prologa kakvog ga mi danas

poznajemo (prema http://www.mta.ca/~rrosebru/oldcourse/371199/prolog/history.html;

dostupno 28.05.2013.). Prema većini izvora 1972. godina se smatra godinom rođenja. Prvi

interpreter jezika Prolog razvio je Phillipe Roussel.

U programskom jeziku Prolog programska logika je izražena putem relacija, dok se

izvođenje programa potiče izvođenjem upita nad tim relacijama. Relacije i upite konstruiramo

koristeći pojam, jednostavan tip podataka Prologa. Relacije definiramo klauzulama. Kada

Prologu zadamo upit, on pokušava s negacijom upita pronaći refutaciju, čime se dokazuje

istinitost početnog upita.

Tipovi podataka u Prologu su pojmovi. Pojmove razlikujemo kao atome, brojeve,

varijable ili kombinacije pojmova.

U Prologu opisujemo relacije definirane značenjima klauzula. Razlikujemo dvije vrste

klauzula: činjenice i pravila. Pravila imaju sljedeći izraz:

Glava :- Tijelo.

Kažemo kako je glava pravila istinita ukoliko je tijelo istinito. Klauzule koje imaju

prazna tijela nazivamo činjenicama. Činjenice imaju sljedeći izraz:

Ime(Ivan).

Ovaj izraz je istovjetan sljedećem pravilu:

Page 26: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

23

Ime(Ivan) :- true.

5.1. XSB

Godine 1983. David H. D. Warren, računalni znanstvenik, koji se bavi logičkim

programiranjem na sveučilištu u Edinburgu, a posebice programskim jezikom Prolog kreira

prvi prevodioc koda (eng. compiler) Prologa. On kreira apstraktan stroj za izršavanje Prologa

koji se sastoji od samostalne memorijske arhitekture i skupa instrukcija. Taj stroj poznat je

kasnije kao Warren Abstract Machine (WAM). WAM do današnjih dana ostaje standardan

prevodioc koda Prologa.

Po razvoju Prologa i WAM-a David Warren, Terrance Swift i Kostis Sagonas na

sveučilištu Stony Brook u New Yorku razvijaju novi programski jezik SB-Prolog. Upravo taj

je jezik preteča današnje poznate implementacije programskog jezika Prolog, XSB-a, koji se

razvija pod okriljem istih znanstvenika. XSB je dakle implementacija programskog jezika

Prologa. Osim toga XSB proširuje Prolog na HiLog, koji omogućuje uporabu logike višeg

reda u programiranju.

Danas XSB ima i sučelje k programskom jeziku Java.

5.2. Logika prvog reda

Klasična logika sudova predstavlja vrlo slabu teoriju, sama ne čini dovoljan oslonac za

pravilno zaključivanje. Mnoga logička zaključivanja, koja koristimo u svakodnevnom životu,

a posebice u matematici izlaze izvan konteksta logike sudova, tj. nemoguće ih je izraziti

pomoću logike sudova. Također veliki problem klasične logike sudova predstavlja formalni

zapis. Čak je i osnovne matematičke pojmove nemoguće zapisati koristeći samo klasičnu

logiku sudova. Upravo iz tog razloga je potrebno uvesti u zaključivanje logiku prvog reda. S

druge strane gledajući, uvodeći logiku prvog reda gubimo neka važna svojstva. Jedno tako

svojstvo je odlučivost. Naime dobra osobina klasične logike sudova je mogućnost provjere

svake napisane formule. Najčešće nam za to služe semantičke tablice, te rezolucija i glavni

test. U logici prvog reda ne postoji takav univerzalan algoritam provjere valjanosti. Također je

potrebno naglasiti kako logika prvog reda ipak ne može izraziti sve matematičke pojmove, pa

je ponekad potrebno pouzdati se u jače sustave logike, kao što je logika drugog reda,

beskonačne logike, itd.

Page 27: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

24

Definicija 9: Alfabet neke teorije prvog reda je unija skupova gdje su redom

skupovi definirani s:

, prebrojiv skup čije elemente nazivamo individualnim varijablama.

, skup logičkih simbola, koje redom nazivamo: negacija,

konjunkcija, disjunkcija, kondicional, bikondicional, univerzalni i egzistencijalni

kvantifikator.

, skup čije elemente nazivamo relacijskim simbolima. Skup I je

neki podskup od N. Prirodan broj naziva se mjesnost relacijskog simbola. Pretpostavljamo

da ovaj skup sadrži barem jedan dvomjesni relacijski simbol.

, skup čije elemente nazivamo funkcijskim simbolima. Skup J je

neki podskup od N, možda i prazan. Prirodan broj naziva se mjesnost funkcijskog

simbola.

, skup čije elemente nazivamo konstantnim simbolima. Skup K je

neki podskup od N, možda i prazan.

( ) , skup pomoćnih simbola (lijeva i desna zagrada, te zarez), (M. Vuković;

Matematička logika (2009:109-110).

Obično se unija skupova relacijskih, funkcijskih i konstantskih simbola naziva skup ili

signatura.

Page 28: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

25

6. Aplikacija

Aplikacija analize društvenih mreža, što je i glavna tema ovog rada, izrađena je u

programskom jeziku Prolog, odnosno njegovoj implementaciji XSB. Aplikacija se sastoji od

dvije odvojene datoteke. Od toga jedna sadrži programski kod, dok druga sadrži podatke, na

kojim se obavlja analiza. Unutar datoteke s podacima, isti su zapisani u obliku činjenica

programskog jezika Prolog, opisanih u poglavlju 5. Također, ukoliko ovaj zapis gledamo sa

stajališta teorije grafova, tada vidimo kako u zapisima podataka uređeni parovi predstavljaju

čvorove unutar mreže, dok sam pojedinačni zapis predstavlja brid, koji je pridružen upravo

tim čvorovima. Manji dio tih podataka izgleda ovako:

veza(1,2).

veza(1,4).

veza(1,8).

veza(1,16).

veza(1,18).

veza(1,21).

veza(2,6).

veza(2,7).

veza(2,21).

veza(3,1).

veza(3,2).

veza(3,4).

veza(3,6).

veza(3,7).

veza(3,8).

veza(3,9).

veza(3,10).

veza(3,11).

veza(3,12).

veza(3,14).

veza(3,17).

veza(3,18).

veza(3,20).

veza(3,21).

veza(4,1).

veza(4,2).

veza(4,6).

veza(4,8).

veza(4,10).

veza(4,11).

veza(4,12).

veza(4,16).

Page 29: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

26

Prethodno prikazani podaci čine jedan dio mreže. Ta mreža, kako je ranije rečeno se

može prikazati vizualno putem grafa. Na slici 6.1. možemo vidjeti upravo taj graf mreže na

kojoj se obavlja analiza. Važno je napomenuti kako je graf netežinski i neusmjereni.

Slika 6.1: Grafički prikaz društvene mreže

Drugi dio aplikacije čini programski kod. Na samom početku programa potrebno je

pozvati predikate koji su nužni za rad s listama. Liste su potrebne kako bi podatke i rezultate

analize spremali, mogli doći do njih i pretraživali ih. U programu koristimo sljedeće

predikate:

Lenght nam predočava duljinu liste.

Member nam služi kako bismo provjerili da li je neki promatrani element član liste.

Append je predikat koja služi za spajanje dvije liste, s tim da se nova lista dodaje na

kraj postojeće.

Reverse je predikat koja služi za okretanje kompletne liste, tako da onaj element koji

je bio prvi u listi, nakon korištenja metode reverse biva zadnji u listi.

Također je potrebno pozvati podatke na kojima ćemo obaviti analizu. U programu to

izgleda ovako:

:- import length/2, member/2, append/3,reverse/2 from lists.

:-[podaci].

Na slici 6.2 prikazan je primjer liste. Pomoću ovog primjera prikazano je kako rade

predikati length i member. Vidljivo je kako prvim upitom tražimo duljinu liste, te program

vrača ispravnu duljinu, prema primjeru na slici 6.2. Također vidimo kako pomoću predikata

member, upitima provjeravamo je li element član liste (u prvom slučaju traženi element je

član liste i upit vrača odgovor true, dok u drugom vidimo kako traženi element nije član liste,

Page 30: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

27

pa program vrača odgovor false). Na slici 6.3. možemo vidjeti primjer liste koju dobijemo

ukoliko na početnoj listi sa slike 6.2. primjenimo predikat reverse. Na slici 6.4.a vidimo

primjere dvaju lista, dok na slici 6.4.b vidimo kako se uporabom predikata append te dvije

liste spajaju u jednu, s tim se da druga lista dodaje na kraj prve liste.

Slika 6.2: Primjer liste

?- Length(L1,L).

L = 9.

?- Member(„B“,L1).

True

?- Member(„K“,L1).

False

Slika 6.3: Lista nakon primjene predikata reverse

a

Page 31: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

28

b

Slika 6.4: Primjer izvođenja predikata append

Nakon ovog koraka u programu imamo pomoćni predikat dvosmjernosti veze. Njega

ne koristimo uvijek, jer stvara previše kombinacija. Činjenica da ne koristimo uvijek ovaj

predikat nam govori s aspekta teorije grafova kako ovdje radimo s usmjerenim grafovima.

Predikat izgleda u programu ovako:

veza2(X,Y):-veza(X,Y);veza(Y,X).

Nadalje u programu imamo predikat PrijateljPrijatelja. Da bismo dobili prijatelja od

prijatelja radimo vezu između njih preko zajedničkog prijatelja. Tako da bismo provjerili je li

Y prijatelj prijatelja od X uzimamo zajedničkog prijatelja Z i radimo provjeru postoji li veza

između njih. Predikat prijatelj prijatelja u programu izgleda ovako:

prijateljPrijatelja(X,Y):-

veza2(X,Z),

veza2(Z,Y).

Sljedeći vrlo bitan dio programa je provjera čvorova s visokim stupnjem, koje

nazivamo Superstars, te čvora s najmanjim stupnjem, kojeg nazivamo Loner. Da bismo

pristupili analizi potrebno je odrediti stupanj svakog čvora, što u programo radimo s

predikatom StupanjVrha, tako da provjeravamo sve ulazne i izlazne veze prema čvoru. Kada

smo to obavili, tada predikatima najveci i najmanji određujemo u listi koji čvorovi imaju

najveći, odnosno najmanji stupanj. Unutar predikata Superstar najveći element liste

izdvajamo kao Superstar. Unutar predikata Loner izdvajamo čvor s najmanjim stupnjem. U

kodu programa to je napravljeno na sljedeći način:

stupanjVrha(Cvor,cvor(Cvor,Broj)):-

setof(Cvor_,(veza2(Cvor,Cvor_)),Cvorovi),

length(Cvorovi,Broj).

superstar(Star):-

Page 32: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

29

findall(Y,X^stupanjVrha(X,Y),Stars),

najveci(Stars,Star).

loner(Lone):-

findall(Y,X^stupanjVrha(X,Y),Loners),

najmanji(Loners,Lone).

najveci( [ X ], X ).

najveci( [ cvor(J,G) | T ], N ) :-

najveci( T, cvor(J1,G1) ),

(

G > G1 ->

N = cvor(J,G);

N = cvor(J1,G1)

).

najmanji( [ X ], X ).

najmanji( [ cvor(J,G) | T ], N ) :-

najveci( T, cvor(J1,G1) ),

(

G1 > G ->

N = cvor(J,G);

N = cvor(J1,G1)

).

Najvažniji dio programa je svakako dokaz eksperimenta malog svijeta, opisanog u

poglavlju 4.3. Unutar programa dokazivanje ovog eksperimenta sastoji se od mnoštva

predikata, kako bismo došli do prosječne duljine puta. Najvažniji od tih predikata je svakako

bfs, koji predstavlja breath-first search, metodu pronalaska najkraćeg puta u stablu opisanu u

poglavlju 3.9. Unutar programa koristimo činjenicu da BFS u usmjerenim netežinskim

grafovima daje najkraći put koji se mjeri u broju čvorova na tom putu. Sam predikat u

programu je implementiran na sljedeći način:

bfs(Start, Kraj, Put, Duljina) :-

bfs1([[Start]], Kraj, Putanja),

reverse(Putanja, Put),

length(Put,Duljina),

!.

bfs1([[Kraj|Put]|_], Kraj, [Kraj|Put]).

bfs1([Put|PreostaliPutevi], Kraj, Putevi) :-

prosiri(Put, NoviPutevi),

append(PreostaliPutevi, NoviPutevi, SviPutevi),

bfs1(SviPutevi, Kraj, Putevi).

Page 33: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

30

7. Primjeri korištenja aplikacije

Do sada smo vidjeli kako je došlo do cijele priče oko same aplikacije, a sada ćemo

vidjeti kako ona uistimu radi. Pokazat ćemo najbitnije dijelove, analiza prijatelja od prijatelja,

superstar-loner, te dokaz fenomena malog svijeta.

Kod izvođenja predikata prijateljPrijatelja, zadajemo upit tako da zadamo čvor za

kojeg želimo saznati njegove prijatelje. Program nam odgovara koliko čvor ima prijatelja. Na

primjeru to izgleda ovako:

?- prijateljPrijatelja(1,X).

X = 6

yes

U sljedećem koraku ćemo vidjeti primjer izvođenja predikata superstar i loner. Kako je

već ranije rečeno superstar je čvor najvećeg stupnja, dok je loner čvor najmanjeg stupnja. U

našem primjeru pronalaženje superstar-a i loner-a izgleda ovako:

?- superstar(X).

X = cvor(2,32)

yes

?- loner(X).

X = cvor(1,24)

yes

ProsječnaDuljinaRuta je predikat koji ustvari predstavlja fenomen malog svijeta. To je

prosjek duljina puteva između pojedinih čvorova. Na realnom primjeru taj upit izgleda ovako:

?- prosjecnaDuljinaRuta(Duljina).

Duljina = 2.4880

Page 34: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

31

8. Zaključak

Na temelju prikazanog u ovom radu mogu zaključiti kako su društvene mreže, kao i

analize istih područje znanosti koje je u ubrzanom procesu razvitka. Iako teoretski nastanak

društvenih mreža nije zanimao prosječne ljude, možemo zaključiti kako danas itekako svi

imaju interesa znati ponešto o društvenim mrežama. Upravo iz tog razloga se dosta

znanstvenika upušta u promatranje i analiziranje takvih mreža. Možemo samo pretpostaviti do

kolikih će razina analize mreža doći u budućnosti. Same te spoznaje ovu temu čine vrlo

zanimljivom i produktivnom.

Vrlo zanimljiva je povezanost teorije koja objašnjava društvene mreže s teorijom

grafova. Prihvaćanjem sudjelovanja matematike moguće je objasniti daleko više fenomena

vezanih za društvene mreže.

Danas je sve više prisutna pojava mreža i sustava nove generacije. Sama pojava

semantičkog weba predstavlja ogroman iskorak prema novoj razini globalnih mreža. Također

je vrlo važno pratiti razvoj programskih jezika više razine, poput Flore-2. Svi ovi pojmovi

svoje korjene imaju unutar Prologa, odnosno deduktivnih jezika. Upravo sve to čini dobar

razlog za proučavanje teme ovog rada.

Page 35: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

32

Abecedni popis korištene literature

1. Knjige:

1. B.Divjak i A. Lovrenčić, Diskretna matematika s teorijom grafova, TIVA

Varaždin, 2005.

2. F. Karinthy, Članak Chains-links iz djela Everything is Different, s.l., 1929.

3. J. Moreno, Who shall survive, Beacon House, Beacon, N.Y., 1953.

4. K. Bogart, C. Stein, R.L. Drysdale, Discrete mathematics for computer

science, Key College Publishing, Emeryville, Canada, 2005.

5. M.E.J. Newman, Networks an Introduction, Oxford University Press, Oxford,

N.Y., 2010.

6. M. Vuković, Matematička logika, Element, Zagreb, 2009.

7. P. Mika, Social networks and the semantic web, Springer, N.Y., 2007.

8. R. Deinstel, Graph Theory, 3rd Electronic edition, s.l., 2005.

9. R. Sedgewick i K. Wayne, Algorithms – fourth edition, Addison-Wesley

Professional, 2011.

2. Internetski izvori:

1. Sourceforge: http://xsb.sourceforge.net/manual1/ (dostupno 03.06.2013.).

2. Rosebrugh.R.:

http://www.mta.ca/~rrosebru/oldcourse/371199/prolog/history.html (dostupno

28.05.2013.).

Page 36: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

33

Prilog 1: Kod programa

:- import length/2, member/2, append/3,reverse/2 from lists.

:-[podaci].

veza2(X,Y):-veza(X,Y);veza(Y,X).

prijateljPrijatelja(X,Y):-

veza2(X,Z),

veza2(Z,Y).

put(X,Y):-

veza(X,Y).

put(X,Y):-

veza(X,Z),

put(Z,Y).

bfs(Start, Kraj, Put, Duljina) :-

bfs1([[Start]], Kraj, Putanja),

reverse(Putanja, Put),

length(Put,Duljina),

!.

bfs1([[Kraj|Put]|_], Kraj, [Kraj|Put]).

bfs1([Put|PreostaliPutevi], Kraj, Putevi) :-

prosiri(Put, NoviPutevi),

append(PreostaliPutevi, NoviPutevi, SviPutevi),

bfs1(SviPutevi, Kraj, Putevi).

prosiri([Start|Put], NoviPutevi) :-

bagof([NextStart,Start|Put],

((veza(Start,NextStart);veza(NextStart,Start)),not(member(NextStart,

Put))), NoviPutevi), !.

prosiri(_, []).

Page 37: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

34

sviSudionici(D):-setof(X,veza2(X,_),D).

sveKombinacijeLjudi(L):-

sviSudionici(D),setof(X,kombinacije(2,D,X),L).

kombinacije(0,_,[]).

kombinacije(K,L,[X|Xs]) :- K > 0,

el(X,L,R),

K1 is K-1,

kombinacije(K1,R,Xs).

el(X,[X|L],L).

el(X,[_|L],R) :- el(X,L,R).

suma([],0).

suma([G|R],S):-

suma(R,S1),

S is S1+G.

prosjek([],0).

prosjek(L,P):-

suma(L,S),

length(L,B),

P is S/B.

najkracaRutaSvi(D):-

sveKombinacijeLjudi(L),

member([X,Y],L),

bfs(X,Y,_,D).

prosjecnaDuljinaRuta(D):-

findall(Duljina,najkracaRutaSvi(Duljina),Lista),

prosjek(Lista,D).

stupanjVrha(Cvor,cvor(Cvor,Broj)):-

setof(Cvor_,(veza2(Cvor,Cvor_)),Cvorovi),

length(Cvorovi,Broj).

Page 38: ANALIZA DRUŠTVENIH MREŽA U DEDUKTIVNIM JEZICIMA

35

superstar(Star):-

findall(Y,X^stupanjVrha(X,Y),Stars),

najveci(Stars,Star).

loner(Lone):-

findall(Y,X^stupanjVrha(X,Y),Loners),

najmanji(Loners,Lone).

najveci( [ X ], X ).

najveci( [ cvor(J,G) | T ], N ) :-

najveci( T, cvor(J1,G1) ),

(

G > G1 ->

N = cvor(J,G);

N = cvor(J1,G1)

).

najmanji( [ X ], X ).

najmanji( [ cvor(J,G) | T ], N ) :-

najveci( T, cvor(J1,G1) ),

(

G1 > G ->

N = cvor(J,G);

N = cvor(J1,G1)

).