Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

Similar documents
Mathcad sa algoritmima

Projektovanje paralelnih algoritama II

TEORIJA SKUPOVA Zadaci

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

ZANIMLJIVI ALGEBARSKI ZADACI SA BROJEM 2013 (Interesting algebraic problems with number 2013)

Uvod u relacione baze podataka

Uvod u dinamičko programiranje

Fajl koji je korišćen može se naći na

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle).

Red veze za benzen. Slika 1.

Osobine metode rezolucije: zaustavlja se, pouzdanost i kompletnost. Iskazna logika 4

Konstrukcija i analiza algoritama

Mehurasto sortiranje Brzo sortiranje Sortiranje učešljavanjem Sortiranje umetanjem. Overviev Problemi pretraživanja Heš tabele.

Fibonaccijev brojevni sustav

Karakteri konačnih Abelovih grupa

Metode izračunavanja determinanti matrica n-tog reda

Nekoliko kombinatornih dokaza

Neke klase maksimalnih hiperklonova

Rekurzivni algoritmi POGLAVLJE Algoritmi s rekurzijama

Fraktali - konačno u beskonačnom

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE

UNIVERZITET U BEOGRADU MATEMATIČKI FAKULTET

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike. Sortiranje u linearnom vremenu

BROJEVNE KONGRUENCIJE

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva.

O aksiomu izbora, cipelama i čarapama

ALGORITMI PODIJELI PA VLADAJ

ALGORITAM FAKTORIZACIJE GNFS

Prsten cijelih brojeva

Karakterizacija problema zadovoljenja uslova širine 1

Matematika (PITUP) Prof.dr.sc. Blaženka Divjak. Matematika (PITUP) FOI, Varaždin

Metrički prostori i Riman-Stiltjesov integral

HRVATSKA MATEMATIČKA OLIMPIJADA

Funkcijske jednadºbe

Šime Šuljić. Funkcije. Zadavanje funkcije i područje definicije. š2004š 1

Velimir Abramovic: KOLIKO IMA BESKONACNOSTI U MATEMATICI? (Iz Osnovi Nauke o Vremenu )

Konstekstno slobodne gramatike

Algoritmi za mnoºenje i dijeljenje velikih. brojeva. Marko Pejovi UNIVERZITET CRNE GORE. Prirodno-matemati ki fakultet Podgorica. Podgorica, 2018.

Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku

Konstrukcija i analiza algoritama

24. Balkanska matematiqka olimpijada

Turingovi strojevi Opis Turingovog stroja Odluµcivost logike prvog reda. Lipanj Odluµcivost i izraµcunljivost

Teorem o reziduumima i primjene. Završni rad

Kvaternioni i kvaternionsko rješenje kvadratne jednadžbe

Permutacije sa ograniqeƭima

Sortiranje podataka. Ključne riječi: algoritmi za sortiranje, merge-sort, rekurzivni algoritmi. Data sorting

POOPĆENJE KLASIČNIH TEOREMA ZATVARANJA PONCELETOVOG TIPA

Nilpotentni operatori i matrice

Zanimljive rekurzije

O GLATKIM GRAFOVIMA KOMPATIBILNIM SA TEJLOROVIM OPERACIJAMA

Sveučilište J.J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike. Ivana Oreški REKURZIJE.

SITO POLJA BROJEVA. Dario Maltarski PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK. Diplomski rad. Voditelj rada: Doc. dr. sc.

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1

Algoritam za odre divanje ukupnog poravnanja dva grafa poravnanja parcijalnog ure daja

Pitagorine trojke. Uvod

Matrice u Maple-u. Upisivanje matrica

Neke primene teorije fazi skupova i fazi logike u procesiranju slika

Klase neograničenih operatora

AKSIOM IZBORA I EKVIVALENCIJE

Uvod u algoritamske tehnike

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu

Hamiltonov princip i parcijalne diferencijalne jednačine

ARDUINO KROZ JEDNOSTAVNE PRIMJERE - pripreme za natjecanja -

NIZOVI I REDOVI FUNKCIJA

Metode praćenja planova

Mersenneovi i savršeni brojevi

Maja Antolović Algoritmi u teoriji brojeva

KRITERIJI KOMPLEKSNOSTI ZA K-MEANS ALGORITAM

U ovom dijelu upoznat ćemo strukturu podataka stablo, uvesti osnovnu terminologiju, implementaciju i algoritme nad tom strukturom.

Dr. Željko Jurić: Matematička logika i teorija izračunljivosti Radna skripta za istoimeni kurs na Elektrotehničkom fakultetu u Sarajevu.

PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK BINARNI POLINOMI. Diplomski rad. Voditelj rada: doc. dr. sc. Goranka Nogo. Zagreb, 2017.

Sveučilište J.J. Strossmayera u Osijeku. Odjel za matematiku. David Komesarović. Mooreovi grafovi. Diplomski rad. Osijek, 2017.

Krivulja središta i krivulja fokusa u pramenu konika. konika zadanom pomoću dviju dvostrukih točaka u izotropnoj ravnini

DETERMINATION OF THE EFFECTIVE STRAIN FLOW IN COLD FORMED MATERIAL

Formule za udaljenost točke do pravca u ravnini, u smislu lp - udaljenosti math.e Vol 28.

Neizrazito, evolucijsko i neurora unarstvo.

Zbirka ispitnih zadataka iz Baza Podataka 1 Ispiti i kolokvijumi u periodu

Modified Zagreb M 2 Index Comparison with the Randi} Connectivity Index for Benzenoid Systems

Matematika 2, ZS 2016/2017

Linearno uređena topologija

Didaktički aspekti matematičkog modeliranja

Grafovi. Osnovni algoritmi sa grafovima. Predstavljanje grafova

Dekartov proizvod grafova

Jednočlani potpuni skupovi veznika za iskaznu logiku

On the relation between Zenkevich and Wiener indices of alkanes

Linearno programiranje i primjene

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku DIOFANTSKE JEDNADŽBE

AUTOMATSKE GRUPE I STRUKTURE PREDSTAVLJIVE KONAČNIM AUTOMATIMA

Razni načini zadavanja vjerojatnosti

Vedska matematika. Marija Miloloža

ALGORITMI ZA ISPITIVANJE DJELJIVOSTI

Ariana Trstenjak Kvadratne forme

1 Konveksni skupovi i konveksne funkcije

U čemu je snaga suvremene algebre?

Problem četiri boje. Four colors problem

Transcription:

Permutacije Zadatak. U vreći se nalazi n loptica različitih boja. Iz vreće izvlačimo redom jednu po jednu lopticu i stavljamo jednu pored druge. Koliko različitih redosleda boja možemo da dobijemo? Primer 1. Neka je n = 2 i neka su loptice plave i crvene boje. Imamo 2 moguća redosleda prikaza na slici 1. Slika 1 Primer 2. n = 3 i loptice su plave, crvene i zelene boje. Imamo 6 mogućih redosleda prikazih na slici 2. Slika 2 Probaćemo da izračunamo koliko ima različitih redosleda u slučaju proizvoljnog broja n. Na prvom mestu u redosledu može da stoji bilo koja od n loptice. Na drugom mestu u redosledu mogu da stoje sve loptice, osim loptice koja stoji na prvom mestu. Možemo zaključiti da postoji ukupno n (n 1) različitih redosleda loptica na prve 2 pozicije. Koristeći slično razmatranje, na i-tom mestu moguće je postaviti n i + 1 lopticu, tj. na mestu i ne mogu da se nađu loptice koje već stoje na nekom od prvih i 1 mesta. Dobijamo da za prvih i mesta postoji n (n 1) (n 2) (n i + 1) različitih redosleda. Kada u formulu ubacimo da je i = n dobijamo da postoji ukupno n (n 1) (n 2) 2 1 = n! različitih redosleda. Sada ćemo dati opis algoritma koji ispisuje sve permutacije. Nama je potrebno da na prvu poziciju u redosledu postavimo neki od n elemenata, te onda da na preostalih n 1 pozicija rasporedimo preostalih n 1 loptica. Ovaj problem možemo rešiti rekurzivnim putem. Na početku napravimo niz skup u kome će se nalaziti svih n elemenata. U prvom pozivu rekurzivne funkcije postavimo jedan od elemenata iz niza skup na prvo mesto, izbacimo taj element iz niza i pozovemo rekurzivno funkciju koja će rasporediti preostalih n 1 elemenata. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će markirano[i] = true označavati da je i-ti element u nizu skup izbačen, te ga ne možemo više iskoristiti u daljim rekurzivnim pozivima. Kada se vratimo iz rekurzivnih poziva u funkciju u kojoj smo postavili element i, potrebno je postaviti markirano[i] = false, kako bismo mogli nadalje da koristimo i-ti element. KOMBINATORIKA 1

Sledi primer funkcije koja ispisuje sve permutacije. 01 function Permutations( position, ref permutation, ref mark, a, n ) 02 if position = n+1 then 03 print array permutation 06 for i = 1 to n do 07 if not mark[i] then 08 permutation[ position ] = a[i] 09 mark[i] = true 10 Permutations( position+1, permutation, mark, a, n ) 11 mark[i] = false 12 end if Varijacije Ponovo ćemo krenuti od zadatka, da bi se dobio osećaj šta se traži. Zadatak. U vreći se nalazi n loptica različitih boja. Iz vreće izvlačimo tačno k loptica i stavljamo jednu pored druge. Koliko različitih redosleda boja možemo da dobijemo? Primer 1. n = 3 (zelena, plava i crvena) i k = 2, na slici 3 možemo videti 6 mogućih rasporeda Slika 3 Primer 2. n = 4 (zelena, plava, crvena, žuta) i k = 1, na slici 4 su prikazana sva 4 moguća rasporeda Slika 4 Ponovo se postavlja pitanje koliko ima mogućih rasporeda za proizvoljne brojeve n i k. Kod permutacija smo izveli formulu za broj različitih rasporeda na prvih i pozicija. Ovde je dovoljno da umesto i u formuli ubacimo k i dobićemo broj različitih načina, tj. n (n 1) (n 2) (n k + 1) = n! (n k)!. KOMBINATORIKA 2

Algoritam za ispisivanje svih varijacija je veoma sličan algoritmu za ispisivanje svih permutacije, sa razlikom da smo kod permutacija išli do dubine n u rekurziji, dok ćemo ovde prekidati rekurziju posle dubine k. Pseudo kod je dat u nastavku. 01 function Variations( position, ref variation, ref mark, a, n, k ) 02 if position = k+1 then 03 print array variation 06 for i = 1 to n do 07 if not mark[i] then 08 variation[ position ] = a[i] 09 mark[i] = true 10 Variations( position+1, variation, mark, a, n, k ) 11 mark[i] = false 12 end if Kombinacije Zadatak. U vreći se nalazi n loptica različitih boja. Iz vreće izvlačimo tačno k loptica i stavljamo na gomilu u kojoj redosled loptica nije bitan. Koliko različitih gomila možemo da dobijemo? Dve gomile su različite ukoliko ne sadrže iste loptice. Primer 1. n = 3 (crvena, plava, zelena) i k = 2 postoji 3 moguće gomile prikazane na slici 5 Slika 5 Primer 2. n = 4 (crvena, plava, zelena, žuta) i k = 2 postoji 6 gomila koje su prikazane na slici 6 Slika 6 Primetimo da je redosled loptica nebitan kod kombinacija, te je gomila (plava, crvena) ista kao i gomila (crvena, plava), te možemo zaključiti da za jednu kombinaciju od k loptica, postoji k! varijacija. Iz pomenutog razmatranja možemo zaključiti da je broj kombinacija za proizvoljno n i k jednak n (n 1) (n 2) (n k+1) k (k 1) (k 2) 2 1 = n! (n k)! k! = (n k ). KOMBINATORIKA 3

Kako redosled elemenata u kombinaciji nije bitan, pri ispisu je dovoljno voditi računa da element sa pozicije i, i < j nikad ne stavimo posle elementa na poziciji j. Algoritam za ispisivanje svih kombinacija je veoma sličan prethodno opisanim algoritmima. 01 function Combinations( position, start, ref combination, a, n, k ) 02 if position = k then 03 print array combination 06 if start = n+1 then 07 return // potrošili smo sve elemente 08 end if 09 10 for i = begin to n do // begin je jedan element odmah posle prethodno stavljenog 11 combination[ position ] = a[i] 12 Combinations( positions+1, i+1, combination, a, n, k ) Partitivni skup Neka nam je dat skup S. Skup svih podskupova skupa S se zove partitivni skup skupa S i označavaćemo ga sa P(A). Primer. S = {1,2,3}, P(S) = {, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3}} Svaki podskup možemo jednoznačno da predstavimo uz pomoć binarnog broja sa n cifara, gde je n broj elemenata skupa. Cifra i u broju je jednaka 1 ukoliko podskup sadrži i-ti element iz skupa, inače je 0. Primer. A = {1,3} 101, B = {2} 010 Bitwise AND operator je operacija nad domenom {0,1} data u tabeli 1. AND 0 1 0 0 0 1 0 1 Tabela 1 Za nenegativne cele brojeve A i B, A AND B se računa na sledeći način: neka su A = (a n a n 1 a 1 ) 2 i B = (b n b n 1 b 1 ) 2 binarni zapisi brojeva A i B (ukoliko se brojevi cifara u binarnom zapisu razlikuju, onda se dodaju vodeće nule onom binarnom zapisu koji sadrži više cifara). Tada je A AND B = C = (c n c n 1 c 1 ) gde je c i = a i AND b i. KOMBINATORIKA 4

Primer. 20 AND 5 = 4 10100 2 = 20 10 AND 00101 2 = 5 10 ------------------------------ 00100 2 = 4 10 Ukoliko imamo skup sa n elemenata, svaki podskup je jedinstveno određen sa binarnim brojem od n cifara, a znamo da takvih brojeva ima 2 n 1. Neka nam je dat broj a koji je manji od 2 n, postavlja se pitanje kako da znamo koji podskup je predstavljen brojem a. Element i skupa se nalazi u podskupu određenim brojem a ukoliko važi a AND 2 i = 2 i, ovde proveravamo da li je i-ta cifra u binarnom zapisu broja a jednaka 1. U nastavku možete videti primer ispisane funkcije koja prolazi kroz sve podskupove skupa od n elemenata. 01 function PartitivanSkup( a, n ) 02 for bitmask = 1 to 2^n-1 do 03 podskup = empty 04 for i = 1 to n do if ( (bitmask AND 2^j) = 2^j ) then 06 podskup.add( a[i] ) 07 end if 08 end for 09 10 print podskup 11 end for 12 end function KOMBINATORIKA 5