TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA:...

25
UNIVERZITET U NOVOM SADU TEHNIČKI FAKULTET MIHAJLO PUPINZRENJANIN SEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOĆU NETWORKX-A Predmet: Sistemi veštačke inteligencije Profesor: Prof. dr Ivana Berković Studenti: Svetlana Živanov IT 33/16 Asistent: Doc. dr Višnja Ognjenović Aleksa Putnik IT 38/16 Emilija Kulman IT 39/16 Zrenjanin, 2019. godina

Transcript of TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA:...

Page 1: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

UNIVERZITET U NOVOM SADU

TEHNIČKI FAKULTET

„MIHAJLO PUPIN“

ZRENJANIN

SEMINARSKI RAD 1. TIMA

TEMA: GRAFOVI U PYTHON-U POMOĆU

NETWORKX-A

Predmet: Sistemi veštačke inteligencije

Profesor: Prof. dr Ivana Berković Studenti: Svetlana Živanov IT 33/16

Asistent: Doc. dr Višnja Ognjenović Aleksa Putnik IT 38/16

Emilija Kulman IT 39/16

Zrenjanin, 2019. godina

Page 2: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

2

SADRŽAJ

1. Predmetni cilj ......................................................................................................................... 3

2. O Python-u ............................................................................................................................. 4

2.1. Pandas ............................................................................................................................. 4

2.2. NumPy ............................................................................................................................ 5

2.3. Matplotlib ........................................................................................................................ 6

3. NetworkX ............................................................................................................................... 7

4. Anaconda ............................................................................................................................... 8

4.1. Instalacija ........................................................................................................................ 8

5. Spyder .................................................................................................................................. 14

6. Grafovi ................................................................................................................................. 15

6.1. Definisanje grafa ........................................................................................................... 15

6.2. Modifikacija grafa ......................................................................................................... 19

7. Generisanje grafova u NetworkX-u ..................................................................................... 21

8. Literatura .............................................................................................................................. 24

9. Izvori preuzetih ilustracija ................................................................................................... 25

Page 3: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

3

1. Predmetni cilj

Upoznavanje sa glavnim pravcima razvoja i postignutim rezultatima u oblasti veštačke

inteligencije radi sagledavanja i razumevanja dometa informatizacije. Osim tehničkih

primena, rezultati se interpretiraju i u smislu novih saznanja o određenim aktivnostima

čoveka kao što su predstavljanje znanja, rešavanje zadataka, značaj heuristika, strategije

pretraživanja i drugo, što je u vezi sa procesima rezonovanja, učenja, prepoznavanja i

obrazovanja.

Page 4: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

4

2. O Python-u

Python je interpretirani, interaktivni, objektno orijentisani programski jezik visokog nivoa,

koji poseduje dinamičku semantiku. Stvorio ga je Gvido van Rosum (Guido van Rossum)

1991. godine, a ime je dobio po kultnoj britanskoj komediji „Monty Python”. Odlikuje ga

visokokvalitetna struktura podataka, koja ga, u kombinaciji sa dinamičkim pisanjem i

vezivanjem, čini veoma atraktivnim za brz razvoj različitih aplikacija.

Python-ova jednostavna sintaksa lako naglašava čitljivost, smanjujući tako troškove

održavanja samog programa. Python podržava pakete koji podstiču modularnost programa i

ponovno korišćenje koda.

Python nema komplikovanih koraka, a ciklus edit-test-debug je neverovatno brz. Debugging

Python program je jednostavan, jer loš unos podatka nikada neće uzrokovati grešku

segmentacije. Umesto toga, debugging opcija će otkriti problem, bez izuzetka. Debbuger na

nivou izvora dozvoljava proveru lokalnih i globalnih varijabli, procenu proizvoljnih izraza,

postavljanje tačaka za zaustavljanje, unošenje linija koda u isto vreme i slično.

Rasprostranjenost Python-a je široka, a ovo su samo neke od industrija u kojima je ovaj

popularni programski jeziki uspešno primenjen: desktop grafički razvoj aplikacija

(uključujući i igrice), matematička i naučna analaza podataka, razvoj interneta (Python danas

koriste neki od najvećih internet domena na svetu poput Googlea, Facebooka, Reddita,

Dropboxa, YouTubea, Instagrama, Pinteresta...).

Python koristi whitespace da ograniči programske blokove, prateći off-side pravilo. Python

pozajmljuje ovo svojstvo od njegovog prethodnika ABC: umesto interpunkcija ili ključnih

reči, on koristi uvlačenje da prikaže blok u kome se odvija programski kod.

Neki od osnovnih paketa programskog jezika Python su: Pandas, NumPy, Matplotlib,

Networkx.

2.1. Pandas

Pandas predstavlja brzu i fleksibilnu open source biblioteku za Python programski jezik koja

pruža visoke performanse za ceo proces analize podataka na jednostavan i intuitivan način.

Ima cilj da postane jedna od najmoćnijih i najfleksibilnijih open source alata za analizu i

manipulaciju podataka. Namenjena je za sve Python korisnike koji žele da rade sa podacima i

koriste moćan alat za to.

Pored biblioteka Matplotlib i NumPy, Pandas je jedna od najkorišćenijih kada je u pitanju

data science oblast. Originalni autor je Wes McKinney a poslednja stabilna verzija

je 0.20.1 koja je izašla u maju 2017. godine. Što se tiče korišćenja, potrebno je poznavanje

osnova Python-a dok se iskustvo u korišćenju Pandas može imati ali nije obavezno.

Neke od osnovnih funkcionalnosti koje se mogu naći u besplatnoj Pandas biblioteci su:

Import i export podataka u različitim formatima (CSV, Txt, Excel, SQL, HDF5)

Statistika

Page 5: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

5

Indexiranje, sortiranje, rangiranje

Čišćenje podataka

Filtriranje

Grupisanje (GroupBy)

Pivot

Rad sa vremenskim serijama (time series)

Vizualizacija podataka

Karakteristike:

Velika podrška i jaka zajednica

Aktivno se razvija

Ima opsežnu dokumentaciju

Odlično radi sa ostalim bibliotekama

Izgrađena na NumPy što znači da je brza

Slika 1. Pandas logo

2.2. NumPy

Jedna od najfundamentalnijih open source biblioteka za Python kada je u pitanju

proračunavanje je definitivno NumPy (Numerical Python).

Nudi pre svega matematičke funkcije koje vrše operacije na podacima. Ima karakteristiku

veoma brzog i efikasnog izvršavanja funkcija.

NumPy predstavlja proširenje na Python programskom jeziku dodajući podršku za velike,

višedimenzionalne nizove i matrice, zajedno sa velikim bibliotekama matematičkih funkcija

na visokom nivou koje posluju sa ovim nizovima. U 2005. godini Trevis Olifant stvorio je

NumPy.

NumPy rešava probleme sporosti delom putem obezbeđivanja multidimenzionalnih matrica i

funkcija i operatora koji rade efikasno na nizovima, što zahteva pisanje nekog koda uglavnom

za mali broj unutrašnjih petlji koristeći NumPy.

Slika 2. NumPy logo

Page 6: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

6

2.3. Matplotlib

Matplotlib biblioteka je dizajnirana za laku i moćnu vizualizaciju podataka i postoji već više

od 14 godina. Poslednja stabilna verzija je 2.0.2 koja je izašla početkom maja 2017. godine.

Ova biblioteka je uz NumPy i Pandas vrlo ozbiljan konkurent naučnim, dobro poznatim

alatima (ali poprilično skupim) kao što su MatLab i Mathematica.

Ono što predstavlja manu kod Matplotlib-a je to što je poprilično low level što znači da je

potrebno da se napiše više linija koda kako bi se došlo do nekih naprednijih vizualizacija što

podrazumeva da je potrebno mnogo više truda i vremena nego kada se koriste high level

plaćeni alati ali svakako trud je vredan pokušaja.

Slika 3. Matplotlib logo

Page 7: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

7

3. NetworkX

NetworkX je Python paket za kreiranje, manipulaciju i proučavanje strukture, dinamike i

funkcija složenih mreža.

Putem NetworkX-a mogu se pokrenuti i spremiti mreže u standardnom i nestandardnom

formatu podataka, generisati mnogi tipovi nasumičnih i klasičnih mreža, analizirati mrežna

struktura, izgrađivati mrežni modeli, dizajnirati novi mrežni algoritmi, crtati mreže i slično.

NetworkX pruža:

alate za proučavanje strukture i dinamike socijalnih, bioloških i infrastrukturnih

mreža;

standardni interfejs za programiranje i implementaciju grafova koji je pogodan za

mnoge primene;

brzo razvojno okruženje za saradničke, multidisciplinarne projekte;

interfejs prema postojećim numeričkim algoritmima i kodovima napisanim na C, C

++ i FORTRAN; i

sposobnost jednostavnog rada s velikim nestandardnim skupovima podataka.

Uz NetworkX možete učitati i uskladištiti mreže u standardnim i nestandardnim formatima

podataka, generisati različite vrste slučajnih i klasičnih mreža, analizirati mrežnu strukturu,

izgraditi mrežne modele, dizajnirati nove mrežne algoritme, nacrtati mreže i još mnogo toga.

Slika 4. NetworkX logo

Page 8: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

8

4. Anaconda

Anaconda je besplatna i open source distribucija Python i R programskih jezika za naučno

računarstvo (nauka o podacima, aplikacije za mašinsko učenje, velika obrada podataka,

prediktivna analiza, itd.), koja ima za cilj da pojednostavi upravljanje paketima i

raspoređivanje. Anaconda distribuciju koristi više od 12 miliona korisnika i uključuje više od

1400 popularnih paketa podataka koji su pogodni za Windows, Linux i MacOS.

Anaconda distribucija dolazi sa više od 1.400 paketa, kao i Conda paket i menadžer

virtualnog okruženja nazvan Anaconda Navigator, tako da eliminiše potrebu za samostalnim

instaliranjem svake biblioteke.

Open source paketi mogu se pojedinačno instalirati iz repozitorijuma Anaconda pomoću

naredbe conda install ili pomoću naredbe install koja se instalira sa Anacondom. Pip paketi

pružaju mnoge karakteristike conda paketa i u većini slučajeva mogu raditi zajedno.

Prilagođeni paketi se mogu napraviti pomoću naredbe conda build, a mogu se deliti sa

drugima tako da ih prenesete u Anaconda Cloud, PyPI ili u druge repozitorijume.

Instalacija Anaconda2 uključuje Python 2.7 a Anaconda3 uključuje Python 3.7. Međutim,

možete stvoriti nova okruženja koja uključuju bilo koju verziju Python-a upakovanog sa

condom.

Anaconda Navigator je grafički korisnički interfejs za desktop računare (GUI) uključen u

Anaconda distribuciju koja korisnicima omogućuje pokretanje aplikacija i upravljanje

paketima, okruženjima i kanalima bez upotrebe komandnih linija. Navigator može tražiti

pakete na Anaconda Cloud-u ili u lokalnom repozitorijumu Anaconde, instalirati ih u

okruženje, pokrenuti pakete i ažurirati ih. Dostupan je za Windows, MacOS i Linux.

Sledeće aplikacije su dostupne po default-u u Navigatoru:

JupyterLab

Jupyter Notebook

QtConsole

Spyder

Glueviz

Orange

Rstudio

Visual Studio Code

4.1. Instalacija

Postupak instalacije Anaconde počinje klikom na link

https://www.anaconda.com/distribution/.

Page 9: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

9

Slika 5. Početni izgled sajta

U zavisnoti od vrste operativnog sistema koji koristite (Windows, macOS, Linux) treba

izabrati odgovarajuću instalaciju vodeći računa da li je u pitanju 64-bitni ili 32-bitni

operativni sistem. U ovom slučaju biramo verziju 3.7.

Kada izaberete šta želite da instalirate, pojaviće Vam se ovaj prozor (kliknite na Save File) ili

će program automatski krenuti da se download-uje.

Slika 6. Čuvanje fajla

Kada pokrenete instalaciju, pojaviće Vam se sledeći prozor, kliknite na dugme Run.

Page 10: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

10

Slika 7. Otvaranje i pokretanje fajla

Na sledećoj slici kliknite na dugme Next, a zatim na dugme I Agree.

Slika 8. Postupak instalacije I

U ovom slučaju na sledećoj slici biramo opciju Install for: Just me. Zatim, kliknite na dugme

Next.

Slika 9. Postupak instalacije II

Page 11: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

11

Izaberite folder u kojem želite da sačuvate Anacondu, pa kliknite na dugme Next.

Slika 10. Postupak instalacije III

Na sledećoj slici označite opciju Register Anaconda as my default Python 3.7, zatim kliknite

na dugme Install. Posle toga na narednoj slici kliknite na dugme Next.

Slika 11. Postupak instalacije IV

Page 12: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

12

Slika 11. Postupak instalacije V

Na sledećoj slici birate: ako želite da se instalira Visual Studio Code da biste mogli da *.py

fajl eksportujete u VS Code ekstenziju kliknite na dugme Instal Microsoft VSCode, a ako već

imate VS Code na računaru ili ako ne želite da ugradite ovu opciju kliknite na dugme Skip, a

zatim na narednoj slici na dugme Finish.

Slika 12. Postupak instalacije VI

Page 13: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

13

Slika 13. Kraj instalacije

Slika 14. Izgled Anaconde Navigator

Page 14: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

14

5. Spyder

Spyder je integrisano razvojno okruženje (IDE) otvorenog koda za naučno programiranje u

Python jeziku. Spyder se integriše sa nizom istaknutih paketa u naučnom Python steku,

uključujući NumPy, SciPy, Matplotlib, Pandas, IPython, SymPy i Cython, kao i drugi softveri

otvorenog koda. Objavljen je pod licencom MIT-a.

U početku kreiran i razvijen od strane Pierrea Raybauta 2009. godine, od 2012. Spyder je

održavan i kontinuirano poboljšavan od strane Python programera i zajednice.

Spyder se može proširiti sa plugin-ovima, uključuje podršku za interaktivne alate za proveru

podataka.

Ako želite da pokrenete Spyder-a, u Anaconda Navigator-u kliknite na dugme Launch ispod

ikonice Spyder.

Slika 15. Izgled Spyder-a

Važne komponente Spyder-a su Editor i IPython console.

Editor je višejezički uređivač sa pregledačem funkcija/klasa, alatima za analizu koda,

automatskim završetkom koda, horizontalnim/vertikalnim deljenjem i go-to-definition.

IPython console nam omogućava da izvršimo kod liniju po liniju.

Page 15: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

15

6. Grafovi

Graf je struktura koja opisuje odnose između nekih objekata. Neformalno govoreći, grafove

čine tačke (čvorovi), koje predstavljaju neke objekte, i linije između njih (grane), koje

označavaju odnose između tih objekata. U literaturi graf se definiše kao uređeni par G = (V,

E), gde V predstavlja skup čvorova (V – vertices, nodes or points) a E skup grana koje

povezuju čvorove (E - edges, arcs or lines). Na sledećoj slici je primer grafa sa šest čvorova i

sedam grana.

Slika 16. Graf

Sledeći osnovni tipovi grafa su omogućeni kao Python klase: Graph, DiGraph, MultiGraph i

MultiDiGraph.

Graph - ova klasa implementira neusmeren graf. Ignoriše višestruke grane između dva

čvora. Dozvoljava self-loop edges.

DiGraph - ova klasa implementira usmeren graf. Omogućuje opšte operacije

usmerenog grafa i predstavlja podklasu klase Graph.

MultiGraph - ova klasa omogućava višestruke neusmerene grane između dva čvora.

MultiDiGraph je usmerena verzija MultiGraph-a.

6.1. Definisanje grafa

U IPython konzoli u Spyder-u potrebno je importovati networkx modul:

import network as nx

Ako se desi importing networkx fails, znači da Python ne može da instalira modul, i u tom

slučaju treba proveriti pythonpath.

Prazan graf se kreira na sledeći način:

Page 16: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

16

Dodavanje jednog čvora se vrši na sledeći način:

Dodavanje više čvorova se vrši na sledeći način:

Dodavanje čvorova pomoću putanje se vrši na sledeći način:

Sjedinjavanje čvorova dva različita grafa se vrši na sledeći način:

Page 17: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

17

Dodavanje grane se vrši na sledeći način:

Dodavanje još jedne grane se vrši na sledeći način:

Na poslednjem listing se vidi da su napravljena četiri čvora i dve grane. Prvo smo dodali

jednu granu, pa se dodavanjem te grane prave i dva čvora, a zatim smo dodali još jednu

granu, pa se dodavanjem i te grane prave još dva čvora. Na kraju štampamo sve i vidimo da

imamo graf koji ima dve odvojene grane odnosno graf koji nije povezan.

Dodavanje više grana se vrši na sledeći način:

Page 18: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

18

Sjedinjavanje grana dva različita grafa se vrši na sledeći način:

Primer dodavanja čvorova (različitih vrednosti) i grana na graf:

Page 19: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

19

Naredbe za izračunavanje broja čvorova i broja grana:

6.2. Modifikacija grafa

Uklanjanje pojedinačne grane, pojedinačnog čvora ili celog grafa se vrši na sledeći način:

Page 20: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

20

Dodavanje čvorova koristeći range se vrši na sledeći način:

Dodavanje više grana istovremeno se vrši na sledeći način:

Page 21: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

21

7. Generisanje grafova u NetworkX-u

Primer 1. Generisati graf sa slike u Python-u pomoću modula NetworkX.

Slika 17. Graf 1

Rešenje:

Primer 2. Generisati graf sa slike u Python-u pomoću modula NetworkX.

Slika 18. Graf 2

Rešenje:

Page 22: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

22

Primer 3. Generisati graf sa slike u Python-u pomoću modula NetworkX.

Slika 19. Graf 3

Rešenje:

Primer 4. Generisati potpun graf – najgušći jednostavan graf (sa najvećim mogućim brojem

grana), tj. graf koji ima granu između svaka dva čvora u Python-u pomoću modula

NetworkX.

Slika 20. Graf 4

Rešenje:

Page 23: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

23

Primer 4 na drugi način. Za početak u ovom radu će se pokazati kako se može generisati

potpuni graf sa proizvoljnim brojem čvorova koji imaju vrednost broja. Komanda je

nx.complete_graph(broj čvorova)

a ako uzmemo pet čvorova, onda je rešenje sledeće:

Nakon pokretanja programa (slika 21):

Slika 20. Pokretanje programa u editoru Spyder-a

u IPython konzoli se dobijaju svih pet čvorova i svih 10 grana

runfile('C:/Users/….py', wdir='C:/Users/….)

[0, 1, 2, 3, 4] [(0, 1), (0, 2), (0, 3), (0, 4), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]

Da bi se Primer 4 uradio pomoću komande nx.complete_graph(), potrebno je da se napiše

preoznačavanje čvorova grafa. Jedno od rešenja je sledeće:

Nakon pokretanja programa u IPython konzoli dobija se:

runfile('C:/Users/…..py', wdir='C:/Users/….)

[0, 1, 2, 3, 4] [(0, 1), (0, 2), (0, 3), (0, 4), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]

['A', 'B', 'C', 'D', 'E'] [('A', 'B'), ('A', 'C'), ('A', 'D'), ('A', 'E'), ('B', 'C'), ('B', 'D'), ('B', 'E'),

('C', 'D'), ('C', 'E'), ('D', 'E')]

Nastavak rada sa grafovima se nalazi u radu 2. tima.

Page 24: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

24

8. Literatura

Materijal sa vežbi iz predmeta Sistemi veštačke inteligencije, školska 2018/2019 godina i

internet stranice:

[1] https://www.python.org/

[2] https://networkx.github.io/documentation/stable/tutorial.html

[3] https://www.anaconda.com/distribution/

[4] https://www.spyder-ide.org/

[5] https://pandas.pydata.org/

[6] https://matplotlib.org/

[7] http://www.numpy.org/

[8] https://skolakoda.org/teorija-grafova

Page 25: TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A - tfzr.rs Python tim 1.pdfSEMINARSKI RAD 1. TIMA TEMA: GRAFOVI U PYTHON-U POMOU NETWORKX-A ... Rad sa vremenskim serijama ... alatima (ali

25

9. Izvori preuzetih ilustracija

Slika broj 1 https://pandas.pydata.org/

Slika broj 2 http://www.numpy.org/

Slika broj 3 https://matplotlib.org/

Slika broj 4 https://networkx.github.io/documentation/stable/tutorial.html

Slika broj 16 https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)

Slika broj 17 http://neenuprasad.blogspot.com/2013/09/basic-graph-theory-concepts-

konigsberg.html

Slika broj 18 https://www.includehelp.com/ds/shortest-path-between-two-nodes-in-

graph-using-djikstra-algorithm.aspx

Slika broj 19 http://informatika.stei.itb.ac.id/~rinaldi.munir/Matdis/2018-

2019/Makalah2018/Makalah-Matdis-2018-124.pdf

Slika broj 20 https://skolakoda.org/teorija-grafova