Primerjava algoritmov porazdeljevanja pri hitrem urejanju

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Primerjava algoritmov porazdeljevanja pri hitrem urejanju"

Transcript

1 Univerza v Ljubljani Fakulteta za računalništvo in informatiko Uroš Hekić Primerjava algoritmov porazdeljevanja pri hitrem urejanju DIPLOMSKO DELO INTERDISCIPLINARNI UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN MATEMATIKA Mentor: doc. dr. Jurij Mihelič Ljubljana, 2018

2 Copyright. Rezultati diplomske naloge so intelektualna lastnina avtorja in Fakultete za računalništvo in informatiko Univerze v Ljubljani. Za objavo in koriščenje rezultatov diplomske naloge je potrebno pisno privoljenje avtorja, Fakultete za računalništvo in informatiko ter mentorja. Besedilo je oblikovano z urejevalnikom besedil L A TEX.

3 Fakulteta za računalništvo in informatiko izdaja naslednjo nalogo: Tematika naloge: Hitro urejanje je eden izmed najbolj znanih in raziskovanih algoritmov urejanja in posledično daje vtis, kot da o njem že skoraj vse vemo. Kljub temu se je v zadnjih letih pojavilo kar nekaj novih odkritij, povezanih predvsem z večpivotnim porazdeljevanjem, ki se je v teoriji dolgo smatralo za neučinkovito, praktično testiranje pa je pokazalo, da se še kako splača. V okviru diplomske naloge preštudirajte in opišite različne načine porazdeljevanja tako klasične enopivotne kot večpivotne različice. Preštudirajte tudi različne načine tvorjenja testnih primerov in implementirajte program za njihovo generiranje. Na koncu algoritme porazdeljevanja še eksperimentalno ovrednotite in primerjajte.

4

5 Zahvaljujem se mentorju doc. dr. Juriju Miheliču za ideje, znanje in pomoč pri izdelavi diplomske naloge. Zahvalil bi se tudi Lenki in družini za podporo ter vzpodbudne besede.

6

7 Kazalo Povzetek Abstract 1 Uvod Problem urejanja Zgodovina Hitro urejanje Izboljšave Porazdeljevanje Hoarejevo porazdeljevanje Lomutojevo porazdeljevanje Sedgewickovo porazdeljevanje Wirthovo porazdeljevanje Aho-Hopcroft-Ullman porazdeljevanje Sedgewickovo dvopivotno porazdeljevanje Trosmerno porazdeljevanje Porazdeljevanje Jaroslavskega Tropivotno porazdeljevanje Eksperimentalna primerjava Implementacija algoritmov Generator testnih primerov

8 3.3 Testni primeri Rezultati Sklepne ugotovitve 43 Literatura 45

9 Povzetek Naslov: Primerjava algoritmov porazdeljevanja pri hitrem urejanju Avtor: Uroš Hekić Diplomska naloga obravnava problem urejanja in opisuje različne načine porazdeljevanja pri hitrem urejanju ter morebitne izboljšave le-teh. Opravljena je bila eksperimentalna primerjava algoritmov, ki implementacije različnih algoritmov primerja na podlagi časa izvajanja, števila primerjav, števila premikov in števila rekurzivnih klicev v odvisnosti od velikosti vhodnih podatkov. Predstavljen in implementiran je nov model generiranja testnih primerov, ki pokrije obstoječe testne scenarije iz analiz drugih avtorjev ter doda nove. Ker je hitrost urejanja spremenljiv problem, na katerega močno vpliva arhitektura strojne opreme, je ponovljivo in primerljivo testiranje algoritmov na enakih ali večjih testnih scenarijih ključnega pomena. Ključne besede: urejanje, hitro urejanje, porazdeljevanje.

10

11 Abstract Title: Comparison of quicksort partitioning algorithms Author: Uroš Hekić The thesis deals with the sorting problem, various ways of quicksort partitioning, and possible optimizations thereof. We carried out an experimental analysis comparing different algorithms based on the execution time, number of comparisons, number of moves and number of recursive calls with respect to the length of input data. The thesis also presents and implements a new model for generating test cases that covers existing test scenarios from previous analyses, as well as adds new ones. The sorting speed is an ever-changing problem influenced by hardware architecture, which is why it is important to have a repeatable and comparable way of testing algorithms on the same or larger test scenarios. Keywords: sorting, quicksort, partitioning.

12

13 Poglavje 1 Uvod Med programiranjem velikokrat naletimo na problem, ki zahteva, da so podatki urejeni v določenem vrstnem redu. Urejanje se pojavlja na vseh nivojih razvoja, npr. v uporabniških aplikacijah, podatkovnih bazah, pri upravljanju s procesi itd. Zelo zanimiv je algoritem hitrega urejanja, saj se algoritmi, ki gradijo na tej ideji, v praksi uporabljajo še danes po več kot 50 letih od odkritja. Večina člankov, ki opisujejo na novo odkrite algoritme, kvečjemu primerja svojo implementacijo z osnovno verzijo hitrega urejanja ali pa z verzijo, ki so jo nadgradili. Avtorji posameznih člankov prav tako uporabljajo različne testne primere za ovrednotenje hitrosti, zato je primerjava različnih algoritmov skoraj nemogoča. Prav tako se pri primerjavi uporabi zadnja implementacijo algoritma, ki že vsebuje optimizacije na procesorskem nivoju. Majhne spremembe v algoritmu lahko pohitrijo čas izvajanja ali pa ga upočasnijo, saj se določene optimizacije med seboj izključujejo. Nas pa je zanimalo, kako različni načini porazdeljevanja vplivajo na hitrost, št. primerjav, št. zamenjav in št. rekurzivnih klicev. Cilj naloge je bil tako zbrati različne algoritme hitrega urejanja, jih implementirati in na jih na enotnih testnih podatkih ovrednotiti. 1

14 2 Uroš Hekić 1.1 Problem urejanja Za definiranje problema urejanja potrebujemo definicijo delne urejenosti, ki jo najdemo v [4]. Problem urejanja je problem, kjer za poljuben vhodni seznam dolžine n, tj. a = (a 1, a 2,..., a n ), in dano delno urejenost iščemo njegovo permutacijo a = (a 1,..., a n), da velja a 1 a 2... a n. Seznam bomo predstavili s podatkovno strukturo tabele (angl. array), ki je indeksirana od 0 do n 1. Tabelo bomo označevali z a, njene elemente pa z a[i], kjer velja 0 i n Zgodovina Charles Antony Richard Hoare je algoritem hitrega urejanja razvil leta 1959 [13] med služenjem obveznega vojaškega roka v britanski kraljevi mornarici. V tem času je bil gostujoč študent na moskovski univerzi in je delal na projektu za avtomatsko strojno prevajanje ruščine v angleščino v sklopu nacionalnega fizikalnega laboratorija (National Physical Laboratory, UK). V tistih časih so bili prevodi besed shranjeni v abecednem vrstnem redu na magnetnem traku. Zato se je splačalo, preden so vsako besedo poiskali v slovarju, besede v stavku najprej urediti po abecedi. S tem so lahko poiskali vse besede v slovarju z enim sprehodom po magnetnem traku. Njegova prva ideja je bil algoritem, ki ga danes imenujemo urejanje z mehurčki (angl. bubble sort), ampak je zaradi počasnosti algoritma razmišljal dalje. Njegova naslednja ideja je bilo hitro urejanje. Napisal je algoritem za porazdeljevanje, ni pa znal napisati programa, ki bi poskrbel za neurejeni podtabeli. Kasneje je odkril članek o rekurziji v programskem jeziku ALGOL, in tako leta 1961 objavil članek ter izvorno kodo v reviji Communications of the Association for Computing Machinery. Avtor je v intervjuju leta 2009 [13] dejal, da meni, da je hitro urejanje edini zanimiv algoritem, ki ga je kadarkoli razvil.

15 Diplomska naloga Hitro urejanje Algoritem hitrega urejanja (angl. quicksort) oz. urejanje s porazdeljevanjem je algoritem za urejanje podatkov, ki ga je leta 1959 razvil in leta 1961 objavil Sir Charles Richard Antony Hoare. Algoritem temelji na metodi načrtovanja algoritmov deli in vladaj, kjer večji problem rešimo tako, da ga razdelimo na več manjših podproblemov, ki jih rekurzivno rešimo, iz njihovih rešitev pa sestavimo rešitev prvotnega problema. Algoritem je tako sestavljen iz treh faz deli, vladaj in združi, ki jih predstavimo v nadaljevanju. Deli Quicksort razdeli vhodno tabelo na dva dela, glede na predhodno izbrano vrednost pivota (ki je lahko ena izmed vrednosti iz tabele), na spodnjo in zgornjo tabelo. V spodnji tabeli so vsi elementi, ki so manjši od pivota, v zgornji pa vsi, ki so večji od pivota. Elementi, enaki pivotu so ponavadi lahko v poljubnem delu. Vladaj Obe podtabeli rekurzivno uredimo po enakem postopku, dokler ne pridemo do prazne tabele ali enega elementa (ali dovolj majhne tabele). Te so trivialno urejene, njihovo reševanje oz. obvladovanje pa je preprosto, zato tej fazi pravimo vladaj. Združi Ker sta podtabeli vsaka zase urejeni, elementi pa so pravilno porazdeljeni glede na pivot, je celotna tabela že urejena. Algoritem hitrega urejanja tabele a dolžine n, ki uredi elemente na mestih left,..., right, opisuje algoritem 1.1. Če je indeks left večji ali enak indeksu right, ustavimo urejanje (kar vidimo v vrsticah 2 in 3). V vrstici 4 tabelo s funkcijo Partition porazdelimo na 2 dela (kot je opisano zgoraj v koraku deli) in s tem dobimo indeks pivotnega elementa, tj. pivotindex, vrednost pivota pa je a[pivotindex]. Nato v vrsticah 5 in 6 rekurzivno uredimo podtabeli levo in desno od pivotnega elementa. V splošnem lahko algoritmi uporabljajo s 1 pivotov in s tem tabelo porazdelijo na s podtabel, ki jih na koncu rekurzivno uredimo.

16 4 Uroš Hekić 1 fun Quicksort ( a, l e f t, r i g h t ) 2 i f l e f t r i g h t then 3 return 4 pivotindex = P a r t i t i o n ( a, l e f t, r i g h t ) 5 Quicksort ( a, l e f t, pivotindex 1) 6 Quicksort ( a, pivotindex + 1, r i g h t ) Algoritem 1.1: Algoritem hitrega urejanja Po vsakem porazdeljevanju ostaneta dve tabeli, ki ju je treba urediti. Če je katera izmed tabel prazna ali sestavljena iz enega samega elementa, jo ignoriramo in proces nadaljujemo na drugi tabeli. Tudi če v tabeli ostane dovolj majhno število elementov (odvisno od lastnosti računalnika), lahko za njihovo urejanje uporabimo program, prilagojen za urejanje manjšega števila elementov (npr. urejanje z vstavljanjem). V primeru, ko sta obe tabeli dovolj veliki, bo potrebno odložiti urejanje ene, dokler popolnoma ne uredimo druge. Med tem pa moramo (na skladu rekurzije) hraniti indekse prvega in zadnjega elementa podtabele. Časovna zahtevnost hitrega urejanja v povprečnem primeru je Θ(n log n), kjer n predstavlja število elementov v vhodni tabeli. Časovna zahtevnost v najslabšem primeru je Θ(n 2 ). Kljub temu da obstajajo algoritmi za urejanje s časovno zahtevnostjo Θ(n log n) v najslabšem primeru (npr. urejanje z zlivanjem in urejanje s kopico), pa je v praksi hitro urejanje še vedno hitrejše, saj ima manjšo konstanto, ki v asimptotični notaciji časovne zahtevnosti ni vidna. Pri implementaciji algoritmov bomo elemente urejali v nepadajočem vrstnem redu. Omejili se bomo na urejanje celih števil. 1.4 Izboljšave Implementacije hitrega urejanja se razlikujejo glede na izbiro pivota, glede na število pivotov, glede na porazdeljevanja, glede na število podtabel in druge

17 Diplomska naloga 5 optimizacije, ki jih bomo predstavili v tem razdelku Majhne tabele Quicksort ni primeren za majhne vhodne podatke, še posebej zaradi rekurzije. Že Hoare je zato predlagal uporabo bolj učinkovite metode za manjše število elementov v tabeli. Ena izmed metod, ki so učinkovite pri manjših vhodnih podatkih, je urejanje z vstavljanjem (angl. insertion sort) [12]. Skozi čas se je meja, pri kateri preidemo na urejanje z vstavljanjem, zaradi povečevanja hitrosti procesorjev spreminjala Rekurzija Pri rekurzivni implementaciji porazdeljevanja največjo težavo predstavlja velika količina potrebnega pomnilnika (prostora) za (implicitni) sklad rekurzije. Če je del tabele a[0],..., a[n 1], se bo program rekurzivno izvedel do globine n in s tem porabil dodatni prostor v odvisnosti od n. Že Hoare je izpostavil, da se temu lahko izognemo tako, da najprej rekurzivno kličemo krajšega izmed dveh tabel. Globina rekurzije je s tem omejena na log 2 n, z ročno implementacijo sklada pa lahko prihranimo še več časa Robni primeri Izvirna implementacija je neučinkovita v nekaterih primerih, ki se pogosto pojavijo v praksi. Predpostavimo, da so števila a[0], a[1],..., a[n 1] že urejena. Potem bo a[0] prvi pivotni element, leva podtabela bo prazna, desna podtabela pa bo sestavljena iz elementov a[1],..., a[n 1]. Enako se bo zgodilo v naslednji iteraciji desna podtabela bo vedno manjša samo za en element. Algoritem se bo izvajal nad tabelami z velikostjo: n, n 1, n 2,... in časovna zahtevnost izvajanja bo O(n 2 ). Enako velja za tabelo, ki je urejena v nasprotnem vrstnem redu.

18 6 Uroš Hekić Obstaja veliko načinov, kako zmanjšati verjetnost, da se znajdemo v robnem primeru. Namesto da uporabimo prvi element polja kot pivotni element, lahko poskusimo uporabiti kakšen drug fiksni element, npr. sredinski. Hoare je predlagal izbiro naključnega elementa, kar bi nam zagotovilo, da do robnega primera (z zelo veliko verjetnostjo) v praksi ne bo prišlo, vendar je za generiranje naključnih števil po drugi strani potrebno veliko časa. S to metodo se sicer izognemo nekaj robnim primerom, vendar po nepotrebnem podaljšujemo čas izvajanja Mediana treh vrednosti Naslednja metoda pospeši povprečni čas izvajanja algoritma, hkrati pa poskrbi za to, da se algoritem ne bo izrodil v najslabši robni primer. Hitro urejanje se najbolje obnaša, ko je pivotni element čim bližje sredini tabele oz. leva in desna podtabela vsebujeta čim bolj izenačeno število elementov. Dober pivotni element lahko zato približno ocenimo z mediano tabele. Približek mediane lahko dobimo z izbiro manjšega vzorca iz polja. Idejo je predlagal že Hoare, ampak je ni razvijal naprej, saj je težko ocenil časovni prihranek. Največ časa prihranimo z uporabo vzorca treh elementov pri vsaki fazi porazdeljevanja. Večji vzorci sicer dajo boljši približek, vendar bistveno ne zmanjšajo časa izvajanja. Z uporabo vzorčenja se zavarujemo pred izbiro pivotnega elementa, ki bi bil na robu polja. Povprečni čas izvajanja se zmanjša, če izberemo katere koli tri elemente. Singleton je leta 1969 predlagal uporabo prvega, sredinskega in zadnjega Porazdeljevanje Razlike v času izvajanja prinesejo tudi različni načini porazdeljevanja, ki si jih bomo ogledali v naslednjem poglavju.

19 j i Poglavje 2 Porazdeljevanje 2.1 Hoarejevo porazdeljevanje Imamo izbran pivot p. Hoare je vzel skrajni levi element tabele oz. dela tabele, ki ga trenutno obdelujemo. Dela tabele omejujeta levi indeks lef t in desni indeks right, ki sta na začetku left = 0, right = n 1, kjer n predstavlja število vseh elementov v tabeli. Med porazdeljevanjem je tabela ločena na tri dele, kot je prikazano na sliki 2.1: spodnji del, ki vsebuje elemente, manjše ali enake pivotu, neobdelani del ter zgornji del, ki vsebuje elemente, večje ali enake pivotu. Hoare p p? p i j Slika 2.1: Splošno stanje tabele pri Hoarejevem porazdeljevanju p p p p Potek porazdeljevanja je opisan v algoritmu i = j 2.1. S pomočjo dveh indeksov pregledujemo elemente tabele, to sta spodnji indeks i in zgornji indeks j. Kot vidimo p v vrsticah 5 in p 6, na začetku spodnji indeks i inicializiramo p na začetek podtabele, ki jo trenutno urejamo (indeks left), zgornji indeks j pa na konec j i tabele (indeks right). Na začetku sta tako zgornji kot spodnji del prazna. Spodnji indeks se pomakne navzgor, če je vrednost v tabeli na indeksu i, a[i], p p p 7 Lomuto p p > p?

20 8 Uroš Hekić manjša ali enaka pivotu 1, tj. a[i] p, in se pomika navzgor, dokler ne najde elementa, ki je večji od pivota. V tem primeru se spodnji indeks ustavi, kar lahko vidimo v vrstici 8. Z iteriranjem nadaljuje (kot je opisano v 9. vrstici) zgornji indeks, ki se pomakne navzdol, če je vrednost v tabeli večja ali enaka pivotu, tj. a[j] p, in se pomika navzdol, dokler ne najde elementa, ki je manjši od pivota. Na tej točki smo prepričani, da sta elementa na indeksih i in j na napačnih straneh tabele, zato ju zamenjamo. Po zamenjavi oba indeksa premaknemo za ena v pripadajočo smer, spodnji indeks pa nadaljuje iteriranje. Postopek ponavljamo, Hoare dokler se indeksa ne prekrižata, tj., ko spodnji indeks kaže na višje 2 mesto v tabeli od zgornjega indeksa, i > j. To je razlog, da Hoarejevo porazdelitev p imenujemo p tudi tehnika križanja? kazalcev. p Algoritem se konča v enem izmed dveh možnih stanj (sliki 2.2 in 2.3). i j Pri prvem možnem stanju se meji spodnjega in zgornjega dela prekrijeta, tj. spodnji indeks kaže na višje mesto kot zgornji, i > j. V tem primeru p p p p je potrebno pivot (ki se nahaja na začetku tabele a[left]) zamenjati z j-tim elementom [8]. i = j p p p j i Slika 2.2: Prvo izmed dveh končnih stanj tabele pri Hoarejevem porazdeljevanju p p p Pri drugem možnem stanju se meji zgornjega in spodnjega dela dotakneta, Lomuto tj. spodnji indeks je enak zgornjemu, i = j. Element na tem mestu je manjši alip enak pivotu p in hkrati > p večji ali enak pivotu, torej je enak? pivotu. V tem 1 V originalnem članku Hoare pivot imenuje meja (angl. bound), indeksi so kazalci (angl. j i pointers), indeks, kjer pivot na koncu particioniranja loči spodnje in zgornje elemente, je ločnica (angl. dividing line), namesto o tabeli pa govori o datotekah (angl. files) in poddatotekah p p (angl. subfiles) ali > segmentih. p? 2 Spodnji indeks lahko kaže na višje ali enako mesto v tabeli od zgornjega indeksa, torej i j. j i p p > p j i p p > p

21 Hoare p p? p Diplomska naloga i j 9 p p p p i = j Slika 2.3: Drugo izmed dveh končnih stanj tabele pri Hoarejevem porazdeljevanju p p p j i primeru zamenjava p elementov na i-tem p in j-tem mestu ni p potrebna, saj je pivot že na pravem mestu [8]. V spodnji del vključimo še pivot na prvem mestu, da dobimo enako stanje na sliki 2.4. Lomuto Porazdeljevanje je s tem sicer končano, urejanje tabele pa še ne. Zato rekurzivno p p pokličemo hitro > p urejanje nad zgornjim in spodnjim? delom tabele, kar vidimo v vrsticah 13 in 14. j i 1 fun p QuicksortHoare p ( a, > lp e f t, r i g h t )? 2 i f l e f t r i g h t then j 3 return i 4 p = a [ l e f t ] 5 p i = l e f t p > p 6 j = r i g h t + 1 j 7 while true do 8 do i = i + 1 while i < r i g h t and a [ i ] p p p > p 9 do j = j 1 while j > l e f t and a [ j ] p 10 i f i j break 11 swap ( a, i, j ) 12 swap ( a, l e f t, j ) 13 QuicksortHoare ( a, l e f t, j 1) 14 QuicksortHoare ( a, j + 1, r i g h t ) i Algoritem 2.1: Hoarejevo hitro urejanje

22 p p p p i = j p p p 10 j i Uroš Hekić p p p Slika 2.4: Končno stanje tabele s pivotom na pravilnem mestu Lomuto Hoare 2.2 Lomutojevo porazdeljevanje p p > p? p p? p Spodaj opisano j particioniranje pripisujejo i Nicu Lomutu, populariziral pa ga je Jon Bentley v knjigi i Programming Pearls [5] in kasneje j Cormen et al. v knjigi Introduction to Algorithms [7, 2]. p p > p? p Ideja algoritma je, p da se v vsaki fazi p porazdeljevanja sprehodi p po vseh j i elementih tabele z eno zanko, zato ga imenujemo tudi enozančno porazdeljevanje. Prvotna implementacija algoritma za pivotni element vedno izbere i = j skrajni p desni element, mi p pa bomo zaradi konsistentnosti > p z ostalimi algoritmi p p p izbrali skrajni levi element. Tekomj porazdeljevanja je tabela razdeljena i na štiri dele, podobno kot pri Hoarejevemj hitrem i urejanju, različen je le vrstni red. Splošna shema p tabele je prikazana p na sliki 2.5. Na začetku > p so od indeksa q do (vključno) ip elementi, manjši (ali p enaki) od pivota p p (na indeksu r), od i + 1 do j 1 so elementi, večji od pivota, med j in r 1 sledijo neurejeni elementi, na zadnjem, r-tem mestu pa je pivot [7]. Lomuto p p > p? j i Slika 2.5: Splošno stanje tabele pri Lomutojevem porazdeljevanju p p > p? Lomutojevo porazdeljevanje j je i opisano v algoritmu 2.2. Algoritem inicializira vrednosti tako, da sta spodnji in zgornji del prazna, neurejeni del pa vsebuje celotno tabelo razen pivotnega elementa. Iteracijski indeks i se p p > p sprehodi čez tabelo in v vsakem koraku primerja vrednost v tabeli na i-tem mestu, a[i], s pivotom, ugotovi, ali j element pade v spodnji ali zgornji i del, in izvede ustrezne zamenjave. Če je element manjši od pivota, a[i] < p, potem pade v spodnji p del. Zato, kot jep opisano v vrstici> 8, p inkrementiramo

23 p p p p p p p i = j j i p p p p p p Diplomska naloga j i 11 Lomuto j (povečamo spodnji p del), zamenjamo p i-ti in j-ti element p (začasno ga uvrstimo v zgornji del), nato pa povečamo še i (i-ti element se iz zgornjega dela p p > p? prestavi v spodnji del). Sedaj je i-ti element na pravem mestu. Če pa je Lomuto element večji alij enak pivotu, a[i] i p, pa samo povečamo i (s tem povečamo zgornji p del) p in nadaljujemo > p z naslednjim elementom. Po? končani zanki je neobdelani p del p prazen, pivot > p pa je še vedno na prvem oz.? napačnem mestu, j i kot je prikazano na sliki 2.6. Zamenjamo ga z zadnjim elementom spodnjega j i dela, tj. a[j], kar vidimo v vrstici 9. p p > p? p p > p j i j i p p > p Slika 2.6: Končno p stanje tabelep s pivotom na prvotnem > p j mestu i p p > p Slika 2.7: Končno stanje tabele s pivotom na pravilnem mestu 1 fun QuicksortLomuto 2 i f l e f t r i g h t then 3 return 4 p = a [ l e f t ] 5 j = l e f t 1 6 for i = l e f t + 1 to r i g h t do 7 i f a [ i ] < p i vot then 8 swap ( a, ++j, i ) 9 swap ( a, l e f t, j ) 10 QuicksortLomuto ( a, l e f t, j 1) 11 QuicksortLomuto ( a, j + 1, r i g h t ) Algoritem 2.2: Lomutojevo hitro urejanje

24 12 Uroš Hekić Porazdeljevanje je končano, algoritem mora pa še rekurzivno urediti spodnji in zgornji del, kar se zgodi v vrsticah 10 in 11. Končno stanje je predstavljeno na sliki Sedgewickovo porazdeljevanje Sedgewick je leta 1975 v svoji doktorski tezi predstavil naslednji algoritem, ki prav tako temelji na tehniki križanja kazalcev [12]. V bistvu gre za spremenjeno različico Hoarejevega hitrega urejanja z nekaterimi razlikami. Splošna shema je enaka kot shema 2.1 pri Hoarejevem porazdeljevanju. V primerjavi s Hoarejevo različico se notranja zanka pri primerjavi s pivotom ustavi pri elementu, ki je enak pivotu oz. se pivot in trenutni element primerjata s strogim enačajem (namesto z neenačajem ali enako). Sedgewickovo porazdeljevanje je opisano v algoritmu 2.3. Avtor se znebi dodatne primerjave trenutnega elementa s spodnjim čuvajem (angl. sentinel) v vrstici 8. Zaradi primerjave pivota s strogim neenačajem funkcijo čuvaja prevzame pivotni element. Zunanja zanka je zapisana v obliki do-while, namesto while-do. Avtor je v originalnem algoritmu za pivotni element vedno izbral skrajni desni element (Hoare je izbral skrajni levi element). 1 fun QuicksortSedgewick ( a, l e f t, r i g h t ) 2 i f l e f t r i g h t then 3 return 4 p = a [ r i g h t ] 5 i = l e f t 1 6 j = r i g h t 7 do 8 do i = i + 1 while i < r i g h t and a [ i ] < p 9 do j = j 1 while a [ j ] > p 10 i f j > i then 11 swap ( a, i, j )

25 Diplomska naloga while j i 13 swap ( a, i, r i g h t ) 14 QuicksortSedgewick ( a, l e f t, i 1) 15 QuicksortSedgewick ( a, i + 1, r i g h t ) Algoritem 2.3: Sedgewickovo hitro urejanje Naša implementacija zaradi konsistentnosti z ostalimi algoritmi kot pivotni element izbere skrajni levi element. 2.4 Wirthovo porazdeljevanje Niklaus Wirth je v svojem učbeniku o algoritmih in podatkovnih strukturah iz leta 1985 opisal svojo različico hitrega urejanja. Wirthov algoritem [15] prav tako temelji na tehniki porazdeljevanja s križanjem. Splošna shema je enaka kot shema 2.1 pri Hoarejevem porazdeljevanju. Ena izmed razlik je, da se notranja zanka pri elementu, ki je enak pivotu (oziroma zamenja pivot s trenutnim elementom), ne pomakne naprej in algoritem s tem opravi več zamenjav. V primeru, ko urejamo n enakih elementov, zato opravimo n/2 zamenjav. Nepotrebnim zamenjavam se lahko izognemo tako, da v notranjih zankah (v vrsticah 6 in 7 sheme 2.4) trenutni element v tabeli s pivotom primerjamo z neenačajem ali enako: a[i] p in p a[j]. Vendar v tem primeru pivot p ne bi služil več kot čuvaj in zanka bi se lahko pomaknila izven tabele. Wirth je ugotovil, da preprostost ustavitvenih pogojev odtehta nepotrebne zamenjave, saj se le te redko pojavijo v povprečnem naključnem vhodnem primeru. Algoritem inicializira l = lef t, r = right in inkrementira/dekrementira i ter j v do-while zanki v vrsticah Prav tako ne izvede zadnje zamenjave pred rekurzivnim klicem. Algoritem se razlikuje tudi po tem, da za pivot izbere naključni element. V naši implementaciji bomo vzeli skrajni levi element, saj nas zanimajo samo izboljšave v porazdeljevanju. 1 fun QuicksortWirth ( a, l e f t, r i g h t )

26 14 Uroš Hekić 2 i f l e f t r i g h t then return 3 p = a [ l e f t ] 4 i = l e f t, j = r i g h t 5 do 6 while a [ i ] < p do i = i while p < a [ j ] do j = j 1 8 i f i <= j then 9 swap ( a, i, j ) 10 i = i j = j 1 12 while i > j 13 QuicksortWirth ( a, l e f t, j ) 14 QuicksortWirth ( a, i, r i g h t ) Algoritem 2.4: Wirthovo hitro urejanje 2.5 Aho-Hopcroft-Ullman porazdeljevanje Aho, Hopcroft in Ullman v knjigi The Design and Analysis of Computer Algorithms, ki je bila izdana leta 1974 [4], opišejo različico hitrega urejanja, ki temelji na tehniki križanja kazalcev. Tudi različica hitrega urejanja, ki so jo opisali zgoraj omenjeni avtorji, temelji na tehniki križnega porazdeljevanja. Splošna shema je enaka kot shema 2.1 pri Hoarejevem porazdeljevanju. Porazdeljevanje je opisano v algoritmu 2.5. V vrsticah 8 in 9 lahko vidimo, da algoritem začne z zgornjim kazalcem pri zadnjem elementu in se pomika navzdol, dokler ne najde elementa, manjšega od pivotnega elementa (ali pride do začetka tabele). Potem pa skeniranje začne spodnji kazalec, ki se pomika navzgor, dokler ne najde elementa, ki je večji ali enak pivotnemu elementu (ali pa pride do konca tabele). Če je indeks spodnjega kazalca strogo manjši od indeksa zgornjega kazalca, ju zamenja, kar pomeni, da se zgornji kazalec ne ustavlja pri elementih, ki so enaki pivotu, spodnji kazalec pa se ustavlja. To lahko vidimo v pogojih zanke v vrsticah 8 in 9. Algoritem nima čuvajev,

27 Diplomska naloga 15 notranji zanki v vsaki iteraciji preverjata, ali se indeks že nahaja izven tabele. Prav tako algoritem ne potrebuje zamenjave elementov po koncu zunanje zanke. 1 fun QuicksortAHU ( a, l e f t, r i g h t ) 2 i f l e f t r i g h t then 3 return 4 p = a [ l e f t ] 5 i = l e f t 6 j = r i g h t 7 while i j do 8 while a [ j ] p and j l e f t do j = j 1 9 while a [ i ] < p and i r i g h t do i = i i f i < j then 11 swap ( i, j ) 12 i = i j = j i f i == l e f t then j = j QuicksortAHU ( a, l e f t, i 1) 16 QuicksortAHU ( a, j + 1, r i g h t ) Algoritem 2.5: Aho-Hopcroft-Ullman hitro urejanje 2.6 Sedgewickovo dvopivotno porazdeljevanje Namesto da tabelo porazdelimo na dve particiji z enim pivotom, jo lahko razdelimo na s particij s s 1 pivoti. Sedgewick je v svojem doktoratu obravnaval primer s tremi particijami s = 3 in predlagal sledeči algoritem. Izkazalo pa se je, da je le-ta veliko slabši od klasičnega Hoarejevega porazdeljevanja [14]. Algoritem izbere dva pivotna elementa p in q, pri čemer velja p q. Za spodnji pivot p izberemo skrajni levi element, za zgornji pivot q pa izberemo skrajni desni element. Kot lahko vidimo na shemi 2.8, algoritem razdeli tabelo z elementi med indeksi left,..., right na 5 delov. Spodnji del na

28 16 Uroš Hekić indeksih left,..., i 1 1 vsebuje elemente, ki so manjši od spodnjega pivota p. Spodnji srednji del, na indeksih i 1,..., i 1, vsebuje elemente, ki so večji ali enaki od spodnjega pivota p ali manjši ali enaki zgornjemu pivotu q. Neobdelani del, i,..., j, vsebuje vse neobdelane elemente. Zgornji srednji del, j + 1,..., j 1, prav tako vsebuje elemente, ki so večji ali enaki p ali manjši ali enaki q. Zgornji del, j 1 + 1,..., right, pa vsebuje elemente, ki so večji od zgornjega pivota q. Algoritem poženemo z vhodnima parametroma left = 0 in right = n 1, kjer n predstavlja število elementov v tabeli. Algoritem inicializira i = i 1 = left in j = j 1 = right. Za levi pivot p izbere skrajni levi element p = a[left], za desni pivot q pa skrajni desni element q = a[right]. Če je levi pivot večji od desnega, ju zamenjamo, tako da je p q. Najprej iteriramo po indeksu i, ki se pomika navzgor po tabeli, dokler ne najde elementa, večjega od zgornjega pivota, a[i] > q. Če je i j, sta se kazalca prekrižala in prekinemo zunanjo zanko. Če je trenutni element manjši od pivota, potem i-ti element shranimo na mesto i 1 -tega elementa, povečamo i 1 ter na i-to mesto shranimo a[i 1 ] (elementov ne zamenjujemo, ampak jih zapišemo na prejšnje mesto od njihovega partnerja za zamenjavo, tako ne rabimo začasno shranjevati elementa). Sicer se samo premaknemo za ena navzgor. Iteriranje (v vrstici 12, shema 2.6) nadaljuje zgornji indeks j, ki se pomika navzdol po tabeli in se obnaša simetrično kot zgoraj. Če nismo izstopili iz zunanje zanke, nato v vrsticah postavimo j-ti element v spodnji del, i-ti element pa v zgornji del. Ko izstopimo iz zunanje zanke, pa potem v vrstici 26 popravimo vrednosti i 1 in j 1, ki ju uporabimo za razdelitev tabele med pivoti. Končno stanje tabele vidimo na sliki 2.9 Na koncu samo še rekurzivno pokličemo funkcijo nad spodnjim delom (left,..., i 1 1), združenima srednjima deloma (i 1,..., j 1 ) in zgornjim delom (j 1 + 1,..., right).

29 Diplomska naloga 17 Sedgewick dual-pivot < p p q? p q > q Sedgewick dual-pivot i 1 i j j 1 Slika< 2.8: p Splošnop stanje q tabele pri Sedgewickovem? p dvopivotnem q porazdeljevanju > q < p p q p q > q i 1 i j j 1 i 1 i = j j 1 < p p q p q > q i 1 i = j j 1 Slika 2.9: Končno stanje tabele pri Sedgewickovem dvopivotnem porazdeljevanju 1 fun DualPivotQuicksortSedgewick ( a, l e f t, r i g h t ) 2 i f l e f t r i g h t then return 3 i = l e f t ; i 1 = l e f t ; j = r i g h t ; j 1 = r i g h t 4 p = a [ l e f t ] ; q = a [ r i g h t ] 5 i f p > q then 6 swap ( a, p, q ) 7 while true do 8 i = i while a [ i ] <= q do 10 i f i >= j then break outer while 11 i f a [ i ] < p then 12 a [ i 1 ] = a [ i ] ; i 1 = i ; a [ i ] = a [ i 1 ] 13 i = i j = j 1 16 while a [ j ] >= p do 17 i f a [ j ] > q then 18 a [ j 1 ] = a [ j ] ; j 1 = j 1 1 ; a [ j ] = a [ j 1 ] 19 i f i >= j then break outer while

30 18 Uroš Hekić 20 j = j a [ i 1 ] = a [ j ] ; a [ j 1 ] = a [ i ] 23 i 1 = i ; j 1 = j a [ i ] = a [ i 1 ] ; a [ j ] = a [ j 1 ] a [ i 1 ] = p ; a [ j 1 ] = q DualPivotQuicksortSedgewick ( a, l e f t, i 1 1) 29 DualPivotQuicksortSedgewick ( a, i 1 + 1, j 1 1) 30 DualPivotQuicksortSedgewick ( a, j 1 + 1, r i g h t ) Algoritem 2.6: Sedgewickovo dvopivotno hitro urejanje 2.7 Trosmerno porazdeljevanje Jon Louis Bentley in Malcolm Douglas McIlroy nista bila zadovoljna z obstoječo implementacijo algoritma qsort v standardni C knjižnici, zato sta se odločila napisati svojo. Objavila sta jo leta 1993 v članku Engineering a sort function. Njuna sodelavca sta dve leti pred tem našla primer, ki bi ga algoritem moral urediti v nekaj minutah, izvajal pa se je več ur. Če ga ne bi ustavila, bi se izvajal še več tednov [6]. Njun pristop temelji na problemu nizozemske zastave (Dutch National Flag), kjer urejamo tabelo poljubne dolžine, ki je sestavljena samo iz 3 različnih elementov: 0, 1, 2. Prejšnje verzije hitrega urejanja predpostavljajo, da so vsi elementi različni oz. ne uporabijo informacije o elementih, ki so enaki pivotu. V primeru, da imamo elemente, ki so enaki pivotu, jih večkrat po nepotrebnem primerjamo. Trosmerno hitro urejanje upošteva elemente, enake pivotu več kot jih je, bolje bo deloval. Porazdelitev s pivotom tabelo razdeli na tri dele: elemente, manjše od pivota, enake pivotu in strogo večje od pivota.

31 Diplomska naloga Poenostavljena različica Tabela je sestavljena iz štirih delov, kot je prikazano na sliki 2.10: - spodnji del: vsebuje elemente, manjše od pivota - srednji del: vsebuje elemente, enake pivotu - neobdelani del: po njem se sprehodi iteracijski element - zgornji del: elementi, večji od pivota Tro-smerno < p == p? > p l k r Slika 2.10: Splošno stanje tabele pri trosmernem porazdeljevanju p == p > p Spodnji in zgornji del omejujeta indeksa l in r, indeks k (sprehajalni Bentley-McIlroy element) označuje položaj trenutnega elementa in mejo med srednjim ter neobdelanim delom. Na začetku izvajanja sta spodnji in zgornji del prazna, = p < p? > p = p srednji del vsebuje pivot, neobdelani del pa vsebuje vse preostale elemente. Psevdokoda l algoritma [11] je i predstavljena vj algoritmu 2.7. r 1 fun = Quicksort3Way p ( a <, p l e f t, r i g h t ) > p = p 2 i f r i g h t l e f t then return l 3 p = a [ l e f t ] r 4 l = l e f t ; k = l e f t + 1 ; r = r i g h t Yaroslavsky 5 while k r do 6 i f a [ k ] < p then swap ( a, l ++, k++) p < p p q? 7 else i f a [ k ] > p then swap ( a, k, r ) > q q 8 else k++ l k r 9 Quicksort3Way ( a, l e f t, l 1) 10 Quicksort3Way < p p ( a, r + 1 p, r i g hq t ) q > q Algoriteml 2.7: Trosmerno hitro urejanje, osnovna r različica Tri-pivotno < p p < < q? q < < r > r a b c d

32 < p p < < q? q < < r > r 20 Uroš Hekić Z indeksom k iteriramo po neobdelanem delu do zgornjega dela in v vsaki iteraciji primerjamo k-ti element s pivotom. Če je k-ti element: - manjši od pivota (vrstica 6): sodi v spodnji del, zamenjamo elementa na indeksih l in k ter indeksa inkrementiramo (prestavimo spodnji del in neobdelani del za 1 v desno), - enak pivotu (vrstica 7): sodi v srednji del, zato je že na pravem mestu in inkrementiramo samo k (zmanjšamo neobdelani del), - večji od pivota (vrstica 8): sodi v zgornji del, zamenjamo k in r, in r Tro-smerno dekrementiramo (prestavimo začetek zgornjega dela za 1 v levo). Na koncu zanke so vsi elementi v spodnjem delu manjši od pivota, v < p == p? > p srednjem delu so enaki pivotu in v zgornjem delu večji od pivota, kar vidimo na sliki Sedaj l samo še rekurzivno k uredimo spodnjir in zgornji del. p == p > p Bentley-McIlroy Slika 2.11: Končno stanje tabele pri trosmernem porazdeljevanju Implementacija = p se< dobro p obnaša na? zaporedjih z več > p enakimi elementi. = p Algoritem je zelo l hiter, kadar se vi zaporedju nahaja j čim manjše število r različnih elementov oz. posledično veliko število pivotu enakih elementov. = p < p > p = p Bentley-McIlroy porazdeljevanje l r V praksi je ponavadi manj elementov, podobnih pivotu, kot tistih, ki so različni Yaroslavsky od pivota. V tem primeru je bolj smiselno, da je srednji del iz poenostavljene verzije na robu tabele, saj pri tem naredimo manj zamenjav. Šep bolj učinkovita < p je simetrična p različica, q kjer imamo? elemente, > q enake pivotu, q na obeh koncih tabele l (prikazano na sliki k 2.12). r Bentley-McIlroy porazdeljevanje [11, 6] je opisano v algoritmu 2.8. < p p p q q > q l r Tri-pivotno

33 < p == p? > p l k r p == p > p Diplomska naloga 21 Bentley-McIlroy Tro-smerno = p < p? > p = p l i j r < p == p? > p Slika 2.12: Splošno stanje tabele pri porazdeljevanju Bentley-McIlroy = p l < p k > p r = p Spodnji del l s pivotu enakimi elementi (navzgor) omejuje l, r zgornji del pa p == p > p (navzdol) omejuje r. Podobno kot pri Hoareu oz. porazdelitvi s križanjem kazalcev Yaroslavsky se iteracijski indeks i pomika navzgor, j pa navzdol. To najdemo v Bentley-McIlroy vrsticah 6 do 8 algoritma 2.8. p Ko obdelamo < p vse neobdelane p elemente, q sta? zgornji in spodnji > q del pravilno q = p < p? > p = p porazdeljena, srednjal dela pa se nahajata k na robovih r tabele. To prikazuje slika l i j r < p p p q q > q = p < p > p = p l r l r Tri-pivotno Slika Yaroslavsky 2.13: Končno stanje tabele pri porazdeljevanju Bentley-McIlroy s pivoti na < prvotnih p p mestih < < q? q < < r > r Tro-smerno p < p p q? > q q a b c d Zato ju moramo l z zamenjavami prenesti k na sredino r (vrstici 13 in 14). < p == p? > p Končno stanje je prikazano na sliki Nato algoritem rekurzivno pokličemo< p nad spodnjim p < p p < < q q < < r > r l in zgornjimp delom. k q q r > q a d p l == p r > p Tri-pivotno Bentley-McIlroy Slika 2.14: Končno stanje tabele pri porazdeljevanju Bentley-McIlroy < p p < < q? q < < r > r = p < p? > p = p 1 fun QuicksortBentleyMcIlroy ( a, l e f t, r i g h t ) a b c d 2 i f r i gl h t <= l e f t then i return ; j r 3 p = a [ l e f t ] ; 4 = = r i g h r = j = p < p > p = p < p l = l e f t ; i p < < q l e f t ; j q < < r t + 1 ; > r a d l r Yaroslavsky p < p p q? > q q

34 22 Uroš Hekić 5 while true do 6 while a[++ i ] < p and i < r i g h t 7 while a[ j ] > p 8 i f ( i >= j ) then break 9 swap ( a, i, j ) 10 i f a [ i ] == p then swap ( a, ++l, i ) 11 i f a [ j ] == p then swap ( a, r, j ) 12 i = j for k = l e f t to l do swap ( a, k, j ) 14 for k = r i g h t downto r do swap ( a, k, i++) 15 QuicksortBentleyMcIlroy ( a, l e f t, j ) 16 QuicksortBentleyMcIlroy ( a, i, r i g h t ) Algoritem 2.8: Bentley-McIlroy hitro urejanje 2.8 Porazdeljevanje Jaroslavskega Osnovna različica Shema razdeli tabelo na šest delov oz. na dva pivota in še štiri dele [16], kot je prikazano na sliki 2.15: - levi pivot p - spodnji del: elementi, manjši od p - srednji del: elementi, med p in q - neobdelani elementi - zgornji del: elementi, večji od q - desni pivot q Algoritem predpostavlja, da je levi pivot manjši od desnega, p < q. Trenutni (še neobdelani) element označuje indeks k:

35 l i j r = p < p > p = p l r Diplomska naloga 23 Yaroslavsky Tro-smerno p < p < p p == p q?? > q > p q l l k k r r Slika 2.15: Splošno stanje tabele < p p p p == p q q > p > q če je trenutni l element manjši od levega pivota (vrstica r 7), a[k] < p, Bentley-McIlroy ga zamenjamo z l-tim elementom ter povečamo indeksa l in k (s tem Tri-pivotno srednji del prestavimo za 1 v desno), = p < p? > p = p < p če je trenutni p l < < q element večji i od? desnegaj pivota (vrstica q < < r 8), r a[k] > > r q, ga zamenjamo z r-tim elementom in zmanjšamo r (zgornji del se razširi a b c d = za p 1 v levo), < p > p = p sicer < p povečamo l k p (vrstica < < q 9). q < < r r > r a d k-ti Yaroslavsky element želimo s čim manj potezami spraviti na pravo mesto. Na koncu zanke je potrebno levi in desni pivot premakniti na ustrezno mesto, p kot< jep opisano v vrsticah p q 10 in 11. Končno? stanje osnovne > q različice q prikazuje slika l k r < p p p q q > q l r Tri-pivotno Slika 2.16: Končno stanje tabele Nato s 3 rekurzivnimi klici funkcije uredimo spodnji, srednji in zgornji < p p < < q? q < < r > r del. a b c d Implementacija osnovne različice iz prejšnjega odstavka [10] je opisana v algoritmu 2.9. < p p < < q q < < r > r 1 fun QuicksortYaroSimple ( a, l e f t, r i g h t ) 2 i f r i g h t <= a l e f t then return d 3 i f a [ l e f t ] > a [ r i g h t ] then swap ( a, l e f t, r i g h t )

36 24 Uroš Hekić 4 p = a [ l e f t ], q = a [ r i g h t ] 5 l = l e f t + 1, k = l, r = r i g h t 1 6 while k <= r do 7 i f a [ k ] < p then swap ( a, l ++, k++) 8 else i f a [ k ] > q then swap ( a, k, r ) 9 else k++ 10 swap ( a, l e f t, l ) 11 swap ( a, ++r, r i g h t ) 12 QuicksortYaroSimple ( a, l e f t, l 1) 13 QuicksortYaroSimple ( a, l + 1, r 1) 14 QuicksortYaroSimple ( a, r + 1, r i g h t ) Algoritem 2.9: Hitro urejanje Jaroslavskega, osnovna različica Izboljšana različica Prva pohitritev izhaja iz primera, ko je k-ti element večji od desnega pivota q in bi hoteli k-ti element premakniti v zgornji del oz. zamenjati k-ti in r-ti element. V primeru, da je hkrati r-ti element večji od k-tega, lahko v zanki zmanjšujemo r in k-ti element zamenjamo s tistim, ki bo manjši od r-tega (vrstica 9): while a[r] > q and k < r do r-- Po koncu te zanke je r-ti element res manjši od q, zato ga zamenjamo s k-tim (vrstica 10): swap(a, k, r--) Druga pohitritev pa temelji na želji, da bi indeks k inkrementirali na vsaki iteraciji zunanje while zanke. Tega trenutno ne moremo, ko ne velja, da a[k] < p in a[k] > q oz. v else if znotraj zanke. Po zamenjavi je sicer k-ti element res manjši od q, a[k] < q, vendar ne vemo, ali je večji ali manjši od p. Zato z dodatno zanko preverimo še ta pogoj: if a[k] < p then swap(a, l++, k)

37 Diplomska naloga 25 Po tem lahko na koncu zanke brezpogojno povečamo k. Algoritem z obema pohitritvama [10] je opisan v algoritmu fun QuicksortYaro ( a, l e f t, r i g h t ) 2 i f ( r i g h t <= l e f t ) then return 3 i f a [ l e f t ] > a [ r i g h t ] then swap ( a, l e f t, r i g h t ) 4 p = a [ l e f t ], q = a [ r i g h t ] 5 l = l e f t + 1, k = l, r = r i g h t 1 6 while ( k <= r ) do 7 i f a [ k ] < p then swap ( a, l ++, k ) 8 else i f a [ k ] > q ) then 9 while a [ r ] > q and k < r do r 10 swap ( a, k, r ) 11 i f a [ k ] < p then swap ( a, l ++, k ) 12 k++ 13 swap ( a, l, l e f t ) 14 swap ( a, ++r, r i g h t ) 15 QuicksortYaro ( a, l e f t, l 1) 16 QuicksortYaro ( a, l + 1, r 1) 17 QuicksortYaro ( a, r + 1, r i g h t ) ; Algoritem 2.10: Hitro urejanje Jaroslavskega Dvopivotni Quicksort ima 2n ln(n) primerjav, povprečno št. zamenjav pa 0, 8n ln(n), medtem ko ima klasični Quicksort 2n ln(n) primerjav in n ln(n) zamenjav [16]. 2.9 Tropivotno porazdeljevanje Shrinu Kushagra, Alejandro López-Ortiz, J. Ian Munro in Aurick Qiao so leta 2013 objavili članek, ki opisuje nov tropivotni Quicksort. Algoritem, kot že ime pove, uporablja tri pivote: p, q in r, za katere velja p < q < r. V vsaki iteraciji algoritem particionira tabelo v štiri podtabele

38 p == p > p Bentley-McIlroy = p < p? > p = p 26 l i j r Uroš Hekić (kot prikazano na sliki 2.17) in vsako izmed njih rekurzivno uredi. Na prvi = p < p > p = p pogled izgleda, kot da algoritem izvaja dva nivoja običajnega enopivotnega l r hitrega urejanja v enem koraku porazdeljevanja. Toda sredinski pivot q vsebuje več informacij, saj predstavlja mediano med tremi pivoti. To je enako Yaroslavsky običajnemu algoritmu hitrega urejanja, ki na alternirajočih nivojih kot pivot izbere mediano treh. S tega vidika bi lahko pričakovali, da bo algoritem po p < p p q? > q q hitrosti med klasičnim algoritmom hitrega urejanja in hitrim urejanjem, ki kot pivot uporablja mediano l treh števil. k V praksi pa r se izkaže, da je ta algoritem veliko hitrejši [9]. V psevdokodi < p tropivotnegap porazdeljevanja p q bomo tabelo q označili > q z A, saj a označuje indeks. l Predpostavimo, da so vsi elementi r različni. Algoritem za particioniranje uporablja štiri indekse: a, b, c in d, ki ohranjajo zančno invarianto Tri-pivotno prikazano na spodnji shemi: < p p < < q? q < < r > r a b c d Slika 2.17: Splošno stanje tabele pri tropivotnem porazdeljevanju < p p < < q q < < r > r Indeksa a in b inicializiramo a tako, da kažeta na prvi d element tabele, c in d pa na zadnji element. Algoritem premika b in c enega proti drugemu in premika elemente na a[b] in a[c] v pravilno podtabelo, zanka pa se konča, ko se b in c križata (b > c). V primeru, da je a[b] < q, če velja a[b] < p, zamenjamo a[b] in a[a] ter inkrementiramo a in b, sicer pa ne naredimo ničesar in samo inkrementiramo b (saj je a[b] na pravem indeksu). Simetrično velja za primer a[c] > q. Če je a[b] > q in a[c] < q, potem oba elementa zamenjamo po enem izmed štirih primerov in po potrebi povečamo oz. zmanjšamo a, b, c in d: Če je a[b] > r: (a) če je a[c] < p, potem zamenjamo a[b] in a[a] ter a[a] in a[c] ter inkrementiramo a, (b) sicer zamenjamo a[b] in a[c].

39 = p < p? > p = p l i j r = p < p > p = p Diplomska l naloga r 27 Yaroslavsky V obeh primerih na koncu zamenjamo a[c] in a[d], inkrementiramo b in dekrementiramo c in d. p < p p q? > q q sicer (a[b] < r): l k r (a) če je a[c] < p, potem zamenjamo a[b] in a[a] ter a[a] in a[c] ter < p inkrementiramo p a, p q q > q (b) sicer zamenjamo l a[b] in a[c]. r Tri-pivotno V obeh primerih na koncu inkrementiramo b in dekrementiramo c. < p p < < q? q < < r > r Končno stanje tabele po porazdeljevanju je prikazano na sliki a b c d < p p < < q q < < r > r a d Slika 2.18: Končno stanje tabele pri tropivotnem porazdeljevanju Psevdokoda algoritma za particioniranje [9] je opisana v algoritmu fun P a r t i t i o n 3 P i v o t (A, l e f t, r i g h t ) 2 a = l e f t + 2, b = l e f t c = r i g h t 1, d = r i g h t 1 4 p = A[ l e f t ], q = A[ l e f t + 1 ], r = A[ r i g h t ] 5 while b <= c do 6 while A[ b ] < q and b <= c do 7 i f A[ b ] < p then 8 swap (A, a, b ) 9 a = a b = b while A[ c ] > q and b <= c do 12 i f A[ c ] > r then

40 28 Uroš Hekić 13 swap (A, c, d ) 14 d = d 1 15 c = c 1 16 i f b <= c then 17 i f A[ b ] > r then 18 i f A[ c ] < p then 19 swap (A, b, a ), swap (A, a, c ) 20 a = a else 22 swap (A, b, c ) 23 swap (A, c, d ) 24 b = b + 1, c = c 1, d = d 1 25 else 26 i f A[ c ] < p then 27 swap (A, b, a ), swap (A, a, c ) 28 a = a else 30 swap (A, b, c ) 31 b = b + 1, c = c 1 32 a = a 1, b = b 1, c = c + 1, d = d swap (A, l e f t + 1, a ), swap (A, a, b ) 34 a = a 1 35 swap (A, l e f t, a ), swap (A, r i g h t, d ) Algoritem 2.11: Tropivotno hitro urejanje

41 Poglavje 3 Eksperimentalna primerjava Algoritme smo implementirali v programskem jeziku C. Poganjali smo jih na računalniku s procesorjem Intel(R) Core(TM) i7-7700hq, s frekvenco 2.80 GHz, ki ima 4 jedra (8 niti), 6 MB predpomnilnika in 16 GB DDR4 pomnilnika s frekvenco 1200 MHz. Za prevajanje kode smo uporabili gcc z argumentom za optimizacijo -O Implementacija algoritmov Pri izvajanju algoritmov smo zraven velikosti (in drugih parametrov) vhodnih podatkov beležili: - število primerjav s pivotnim elementom - število premikov - število rekurzivnih klicev - št. ponovitev pri merjenju števila primerjav, premikov in rekurzivnih klicev - čas izvajanja - št. ponovitev pri merjenju časa izvajanja 29

42 30 Uroš Hekić Vse testne primere smo izvedli dvakrat, saj štetje premikov, primerjav in rekurzivnih klicev poveča čas izvajanja. Prvič smo beležili število premikov, število primerjav s pivotnim elementom, število rekurzivnih klicev ter število ponovitev (različnih testnih primerov), ki nam jih je uspelo izvesti znotraj določenega časovnega intervala. Drugič pa smo beležili čas ter prav tako število ponovitev, ki nam jih je uspelo izvesti. Implementirane algoritme in generator testnih primerov najdemo na mojem Github repozitoriju [3]. 3.2 Generator testnih primerov Algoritme smo poganjali nad testnimi primeri različnih družin in velikostnih razredov. Po pregledu področja smo se odločili, da bomo razširili Bentley- McIlroy zbirko testnih primerov [6], ki jo je med drugimi uporabil tudi Jaroslavski. Generatorje smo parametrizirali z naslednjimi parametri: - n: dolžina tabele - m: modul - p 1 : dodatni parameter za prvi korak - p 21, p 22 : dodatna parametra za drugi korak - p 31, p 32 : dodatna parametra za tretji korak Testne primere smo generirali v treh korakih. Prvi korak zgenerira tabelo n števil. Izbiramo lahko med tremi načini generiranja: - Rand(n, m): zgenerira n naključnih števil med 0 in m 1, - Saw(n, m, p 1 ): zgenerira n števil po formuli a[i] = (i p 1 ) mod m

43 Diplomska naloga 31 - Shuffle(n, m) 1 : Na začetku inicializiramo j = 0, k = 1. Z iteracijsko spremenljivko i iteriramo od 0 do n 1 in računamo naključna števila med 0 in m 1, kot je opisano v algoritmu 3.1. Če je število enako 0, povečamo k za 2 in vrednost k shranimo v a[i]. Če pa je število večje od 0, pa povečamo j za 2 in vrednost j shranimo v a[i]. 1 fun s h u f f l e ( a, n, m) 2 for ( i = 0, j = 0, k = 1 ; i < n ; i++) 3 a [ i ] = rand ( ) % m? ( j += 2) : ( k += 2) Algoritem 3.1: Shuffle, eden izmed algoritmov prvega koraka V drugem koraku lahko vnesemo dodaten šum ali pa postavimo spodnjo ali zgornjo mejo za števila v tabeli. - Id: ohrani tabelo nespremenjeno - Plateau(p 21, p 22 ): vsa števila, večja od zgornje meje p 22, zmanjša na p 22, vsa števila, večja od spodnje meje p 21, poveča na p 21 - Dither(p 21 ): prišteje i mod p 21 k a[i]: a[i] = a[i] + (i mod p 21 ) V tretjem koraku lahko dodatno permutiramo obstoječo tabelo z izbiro enega izmed naslednjih algoritmov: - Id: ohrani tabelo nespremenjeno - Sort: uredi tabelo - Reverse(p 31, p 32 ): elemente med indeksoma p 31 n in (vključno) p 32 n postavi v obratni vrstni red - RandPerm: naredi naključno permutacijo tabele 1 Kljub imenu ne gre za permutacijo, tak način generiranja sta uporabila Bentley in McIlroy v članku [6] in ga poimenovala shuffle.

44 32 Uroš Hekić - Swap(p 31 ): naredi p 31 n permutacij dveh naključnih elementov Parametra p 31 in p 32 sta elementa množice [0, 1]. S tem lahko predstavimo indekse od 0 do n. V primeru Reverse ni smiselno imeti večje domene, saj drugi indeksi ne obstajajo. V primeru Swap pa ni smiselno, da naredimo več kot n zamenjav Naključna permutacija Fisher-Yates prerazporeditev Fisher-Yates prerazporeditev (angl. Fisher Yates shuffle), včasih tudi Knuthova prerazporeditev (angl. Knuth s shuffle), je algoritem za generiranje naključne permutacije končnega zaporedja. Algoritem sta prva opisala Ronald Fisher in Frank Yates leta 1938 v svoji knjigi Statistical tables for biological, agricultural and medical research[1]. Pomemben je zato, ker vrne nepristransko permutacijo, kjer je vsaka permutacija enako verjetna. Za generiranje naključne permutacije števil od 1 do n sledimo naslednjim korakom: 1. Zapišemo števila od 1 do n. 2. Izberemo naključno število k med 1 in (vključno) številom številk, ki jih še nismo obdelali. 3. Štejemo od spodaj navzgor in k-to število, ki še ga nismo obdelali, prečrtamo in ga zapišemo na ločen seznam. 4. Ponavljamo 2. korak, dokler vsa števila niso obdelana (prečrtana). 5. Zaporedje na ločenem seznamu iz 3. koraka je naša naključna permutacija. Ob predpostavki, da so števila izbrana v 2. koraku resnično naključna in nepristranska, bo nepristranska tudi permutacija.

45 Diplomska naloga 33 Sodobna različica algoritma Sodobno različico algoritma je predstavil Richard Durstenfeld, leta 1964, populariziral pa jo je Donald E. Knuth v svoji knjigi The Art of Computer Programming kot Algorithm P (Shuffling ) [1]. Medtem ko Fisher-Yates algoritem porabi veliko časa za štetje neobdelanih števil v 3. koraku, Durstenfeld predlaga rešitev, kjer obdelan element premaknemo na konec seznama tako, da ga zamenjamo z zadnjim neobdelanim elementom. Ta izboljšava zmanjša časovno zahtevnost iz kvadratne časovne zahtevnosti O(n 2 ) na linearno O(n). 1 fun D u r s t e n f e l d S h u f f l e ( a, n ) 2 for i from n 1 downto 1 3 j = random ( 0, i ) // 0 j i 4 swap ( a, i, j ) Algoritem 3.2: Durstenfeldov algoritem za generiranje naključne permutacije zaporedja 3.3 Testni primeri Algoritme smo pognali nad testnimi scenariji naključno, duplikati in skoraj urejeno, ki smo jih generirali z našim generatorjem testnih primerov na naslednji način: Naključno Testni scenarij vključuje naključne permutacije tabele z elementi od 0 do (vključno) n 1. Generiramo ga s parametri (Saw(n, n, 1), Id, RandPerm). Duplikati Vključuje naključno permutacijo števil, ki jih sestavlja 85 % enakih števil. Najprej zgeneriramo n števil od 0 do n 1, jih omejimo z zgornjo mejo (1 0, 85) n ter tabelo naključno permutiramo. Generiramo ga s parametri (Saw(n, n, 1), Plateau(0, 0, 15 n), RandPerm).

Zaporedja. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 22. oktober Gregor Dolinar Matematika 1

Zaporedja. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 22. oktober Gregor Dolinar Matematika 1 Matematika 1 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 22. oktober 2013 Kdaj je zaporedje {a n } konvergentno, smo definirali s pomočjo limite zaporedja. Večkrat pa je dobro vedeti,

Διαβάστε περισσότερα

Diferencialna enačba, v kateri nastopata neznana funkcija in njen odvod v prvi potenci

Diferencialna enačba, v kateri nastopata neznana funkcija in njen odvod v prvi potenci Linearna diferencialna enačba reda Diferencialna enačba v kateri nastopata neznana funkcija in njen odvod v prvi potenci d f + p= se imenuje linearna diferencialna enačba V primeru ko je f 0 se zgornja

Διαβάστε περισσότερα

Funkcijske vrste. Matematika 2. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 2. april Gregor Dolinar Matematika 2

Funkcijske vrste. Matematika 2. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 2. april Gregor Dolinar Matematika 2 Matematika 2 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 2. april 2014 Funkcijske vrste Spomnimo se, kaj je to številska vrsta. Dano imamo neko zaporedje realnih števil a 1, a 2, a

Διαβάστε περισσότερα

Tretja vaja iz matematike 1

Tretja vaja iz matematike 1 Tretja vaja iz matematike Andrej Perne Ljubljana, 00/07 kompleksna števila Polarni zapis kompleksnega števila z = x + iy): z = rcos ϕ + i sin ϕ) = re iϕ Opomba: Velja Eulerjeva formula: e iϕ = cos ϕ +

Διαβάστε περισσότερα

Odvod. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 5. december Gregor Dolinar Matematika 1

Odvod. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 5. december Gregor Dolinar Matematika 1 Matematika 1 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 5. december 2013 Primer Odvajajmo funkcijo f(x) = x x. Diferencial funkcije Spomnimo se, da je funkcija f odvedljiva v točki

Διαβάστε περισσότερα

Odvod. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 10. december Gregor Dolinar Matematika 1

Odvod. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 10. december Gregor Dolinar Matematika 1 Matematika 1 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 10. december 2013 Izrek (Rolleov izrek) Naj bo f : [a,b] R odvedljiva funkcija in naj bo f(a) = f(b). Potem obstaja vsaj ena

Διαβάστε περισσότερα

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 21. november Gregor Dolinar Matematika 1

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 21. november Gregor Dolinar Matematika 1 Matematika 1 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 21. november 2013 Hiperbolične funkcije Hiperbolični sinus sinhx = ex e x 2 20 10 3 2 1 1 2 3 10 20 hiperbolični kosinus coshx

Διαβάστε περισσότερα

KODE ZA ODKRIVANJE IN ODPRAVLJANJE NAPAK

KODE ZA ODKRIVANJE IN ODPRAVLJANJE NAPAK 1 / 24 KODE ZA ODKRIVANJE IN ODPRAVLJANJE NAPAK Štefko Miklavič Univerza na Primorskem MARS, Avgust 2008 Phoenix 2 / 24 Phoenix 3 / 24 Phoenix 4 / 24 Črtna koda 5 / 24 Črtna koda - kontrolni bit 6 / 24

Διαβάστε περισσότερα

Booleova algebra. Izjave in Booleove spremenljivke

Booleova algebra. Izjave in Booleove spremenljivke Izjave in Booleove spremenljivke vsako izjavo obravnavamo kot spremenljivko če je izjava resnična (pravilna), ima ta spremenljivka vrednost 1, če je neresnična (nepravilna), pa vrednost 0 pravimo, da gre

Διαβάστε περισσότερα

Zaporedja. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 15. oktober Gregor Dolinar Matematika 1

Zaporedja. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 15. oktober Gregor Dolinar Matematika 1 Matematika 1 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 15. oktober 2013 Oglejmo si, kako množimo dve kompleksni števili, dani v polarni obliki. Naj bo z 1 = r 1 (cosϕ 1 +isinϕ 1 )

Διαβάστε περισσότερα

NEPARAMETRIČNI TESTI. pregledovanje tabel hi-kvadrat test. as. dr. Nino RODE

NEPARAMETRIČNI TESTI. pregledovanje tabel hi-kvadrat test. as. dr. Nino RODE NEPARAMETRIČNI TESTI pregledovanje tabel hi-kvadrat test as. dr. Nino RODE Parametrični in neparametrični testi S pomočjo z-testa in t-testa preizkušamo domneve o parametrih na vzorcih izračunamo statistike,

Διαβάστε περισσότερα

matrike A = [a ij ] m,n αa 11 αa 12 αa 1n αa 21 αa 22 αa 2n αa m1 αa m2 αa mn se števanje po komponentah (matriki morata biti enakih dimenzij):

matrike A = [a ij ] m,n αa 11 αa 12 αa 1n αa 21 αa 22 αa 2n αa m1 αa m2 αa mn se števanje po komponentah (matriki morata biti enakih dimenzij): 4 vaja iz Matematike 2 (VSŠ) avtorica: Melita Hajdinjak datum: Ljubljana, 2009 matrike Matrika dimenzije m n je pravokotna tabela m n števil, ki ima m vrstic in n stolpcev: a 11 a 12 a 1n a 21 a 22 a 2n

Διαβάστε περισσότερα

MATEMATIČNI IZRAZI V MAFIRA WIKIJU

MATEMATIČNI IZRAZI V MAFIRA WIKIJU I FAKULTETA ZA MATEMATIKO IN FIZIKO Jadranska cesta 19 1000 Ljubljan Ljubljana, 25. marec 2011 MATEMATIČNI IZRAZI V MAFIRA WIKIJU KOMUNICIRANJE V MATEMATIKI Darja Celcer II KAZALO: 1 VSTAVLJANJE MATEMATIČNIH

Διαβάστε περισσότερα

Kotne in krožne funkcije

Kotne in krožne funkcije Kotne in krožne funkcije Kotne funkcije v pravokotnem trikotniku Avtor: Rok Kralj, 4.a Gimnazija Vič, 009/10 β a c γ b α sin = a c cos= b c tan = a b cot = b a Sinus kota je razmerje kotu nasprotne katete

Διαβάστε περισσότερα

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 12. november Gregor Dolinar Matematika 1

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 12. november Gregor Dolinar Matematika 1 Matematika 1 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 12. november 2013 Graf funkcije f : D R, D R, je množica Γ(f) = {(x,f(x)) : x D} R R, torej podmnožica ravnine R 2. Grafi funkcij,

Διαβάστε περισσότερα

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 14. november Gregor Dolinar Matematika 1

Funkcije. Matematika 1. Gregor Dolinar. Fakulteta za elektrotehniko Univerza v Ljubljani. 14. november Gregor Dolinar Matematika 1 Matematika 1 Gregor Dolinar Fakulteta za elektrotehniko Univerza v Ljubljani 14. november 2013 Kvadratni koren polinoma Funkcijo oblike f(x) = p(x), kjer je p polinom, imenujemo kvadratni koren polinoma

Διαβάστε περισσότερα

13. Jacobijeva metoda za računanje singularnega razcepa

13. Jacobijeva metoda za računanje singularnega razcepa 13. Jacobijeva metoda za računanje singularnega razcepa Bor Plestenjak NLA 25. maj 2010 Bor Plestenjak (NLA) 13. Jacobijeva metoda za računanje singularnega razcepa 25. maj 2010 1 / 12 Enostranska Jacobijeva

Διαβάστε περισσότερα

Numerično reševanje. diferencialnih enačb II

Numerično reševanje. diferencialnih enačb II Numerčno reševanje dferencaln enačb I Dferencalne enačbe al ssteme dferencaln enačb rešujemo numerčno z več razlogov:. Ne znamo j rešt analtčno.. Posamezn del dferencalne enačbe podan tabelarčno. 3. Podatke

Διαβάστε περισσότερα

Delovna točka in napajalna vezja bipolarnih tranzistorjev

Delovna točka in napajalna vezja bipolarnih tranzistorjev KOM L: - Komnikacijska elektronika Delovna točka in napajalna vezja bipolarnih tranzistorjev. Določite izraz za kolektorski tok in napetost napajalnega vezja z enim virom in napetostnim delilnikom na vhod.

Διαβάστε περισσότερα

Kontrolne karte uporabljamo za sprotno spremljanje kakovosti izdelka, ki ga izdelujemo v proizvodnem procesu.

Kontrolne karte uporabljamo za sprotno spremljanje kakovosti izdelka, ki ga izdelujemo v proizvodnem procesu. Kontrolne karte KONTROLNE KARTE Kontrolne karte uporablamo za sprotno spremlane kakovosti izdelka, ki ga izdeluemo v proizvodnem procesu. Izvaamo stalno vzorčene izdelkov, npr. vsako uro, vsake 4 ure.

Διαβάστε περισσότερα

1. Trikotniki hitrosti

1. Trikotniki hitrosti . Trikotniki hitrosti. Z radialno črpalko želimo črpati vodo pri pogojih okolice z nazivnim pretokom 0 m 3 /h. Notranji premer rotorja je 4 cm, zunanji premer 8 cm, širina rotorja pa je,5 cm. Frekvenca

Διαβάστε περισσότερα

1 Fibonaccijeva stevila

1 Fibonaccijeva stevila 1 Fibonaccijeva stevila Fibonaccijevo število F n, kjer je n N, lahko definiramo kot število načinov zapisa števila n kot vsoto sumandov, enakih 1 ali Na primer, število 4 lahko zapišemo v obliki naslednjih

Διαβάστε περισσότερα

Splošno o interpolaciji

Splošno o interpolaciji Splošno o interpolaciji J.Kozak Numerične metode II (FM) 2011-2012 1 / 18 O funkciji f poznamo ali hočemo uporabiti le posamezne podatke, na primer vrednosti r i = f (x i ) v danih točkah x i Izberemo

Διαβάστε περισσότερα

PONOVITEV SNOVI ZA 4. TEST

PONOVITEV SNOVI ZA 4. TEST PONOVITEV SNOVI ZA 4. TEST 1. * 2. *Galvanski člen z napetostjo 1,5 V požene naboj 40 As. Koliko električnega dela opravi? 3. ** Na uporniku je padec napetosti 25 V. Upornik prejme 750 J dela v 5 minutah.

Διαβάστε περισσότερα

Osnove elektrotehnike uvod

Osnove elektrotehnike uvod Osnove elektrotehnike uvod Uvod V nadaljevanju navedena vprašanja so prevod testnih vprašanj, ki sem jih našel na omenjeni spletni strani. Vprašanja zajemajo temeljna znanja opredeljenega strokovnega področja.

Διαβάστε περισσότερα

V tem poglavju bomo vpeljali pojem determinante matrike, spoznali bomo njene lastnosti in nekaj metod za računanje determinant.

V tem poglavju bomo vpeljali pojem determinante matrike, spoznali bomo njene lastnosti in nekaj metod za računanje determinant. Poglavje IV Determinanta matrike V tem poglavju bomo vpeljali pojem determinante matrike, spoznali bomo njene lastnosti in nekaj metod za računanje determinant 1 Definicija Preden definiramo determinanto,

Διαβάστε περισσότερα

SKUPNE PORAZDELITVE VEČ SLUČAJNIH SPREMENLJIVK

SKUPNE PORAZDELITVE VEČ SLUČAJNIH SPREMENLJIVK SKUPNE PORAZDELITVE SKUPNE PORAZDELITVE VEČ SLUČAJNIH SPREMENLJIVK Kovaec vržemo trikrat. Z ozačimo število grbov ri rvem metu ( ali ), z Y a skuo število grbov (,, ali 3). Kako sta sremelivki i Y odvisi

Διαβάστε περισσότερα

IZPIT IZ ANALIZE II Maribor,

IZPIT IZ ANALIZE II Maribor, Maribor, 05. 02. 200. (a) Naj bo f : [0, 2] R odvedljiva funkcija z lastnostjo f() = f(2). Dokaži, da obstaja tak c (0, ), da je f (c) = 2f (2c). (b) Naj bo f(x) = 3x 3 4x 2 + 2x +. Poišči tak c (0, ),

Διαβάστε περισσότερα

Reševanje sistema linearnih

Reševanje sistema linearnih Poglavje III Reševanje sistema linearnih enačb V tem kratkem poglavju bomo obravnavali zelo uporabno in zato pomembno temo linearne algebre eševanje sistemov linearnih enačb. Spoznali bomo Gaussovo (natančneje

Διαβάστε περισσότερα

Matrike. Poglavje II. Matrika je pravokotna tabela realnih števil. Na primer: , , , 0 1

Matrike. Poglavje II. Matrika je pravokotna tabela realnih števil. Na primer: , , , 0 1 Poglavje II Matrike Matrika je pravokotna tabela realnih števil Na primer: [ ] 1 1 1, 2 3 1 1 0 1 3 2 1, 0 1 4 [ ] 2 7, Matrika je sestavljena iz vrstic in stolpcev Vrstici matrike [ ] 1 1 1 2 3 1 [ ]

Διαβάστε περισσότερα

Deli in vladaj. J.Kozak: PSA II, / 75

Deli in vladaj. J.Kozak: PSA II, / 75 Deli in vladaj J.Kozak: PSA II, 2010-2011 1 / 75 Metoda deli in vladaj je ena od pomembnih splošnih metod načrtovanja algoritmov. Če je problem, ki ga rešujemo, preveč zapleten, si lahko pomagamo tako,

Διαβάστε περισσότερα

8. Diskretni LTI sistemi

8. Diskretni LTI sistemi 8. Diskreti LI sistemi. Naloga Določite odziv diskretega LI sistema s podaim odzivom a eoti impulz, a podai vhodi sigal. h[] x[] - - 5 6 7 - - 5 6 7 LI sistem se a vsak eoti impulz δ[] a vhodu odzove z

Διαβάστε περισσότερα

DISKRETNA FOURIERJEVA TRANSFORMACIJA

DISKRETNA FOURIERJEVA TRANSFORMACIJA 29.03.2004 Definicija DFT Outline DFT je linearna transformacija nekega vektorskega prostora dimenzije n nad obsegom K, ki ga označujemo z V K, pri čemer ima slednji lastnost, da vsebuje nek poseben element,

Διαβάστε περισσότερα

Transformator. Delovanje transformatorja I. Delovanje transformatorja II

Transformator. Delovanje transformatorja I. Delovanje transformatorja II Transformator Transformator je naprava, ki v osnovi pretvarja napetost iz enega nivoja v drugega. Poznamo vrsto različnih izvedb transformatorjev, glede na njihovo specifičnost uporabe:. Energetski transformator.

Διαβάστε περισσότερα

Fazni diagram binarne tekočine

Fazni diagram binarne tekočine Fazni diagram binarne tekočine Žiga Kos 5. junij 203 Binarno tekočino predstavljajo delci A in B. Ti se med seboj lahko mešajo v različnih razmerjih. V nalogi želimo izračunati fazni diagram take tekočine,

Διαβάστε περισσότερα

Tabele termodinamskih lastnosti vode in vodne pare

Tabele termodinamskih lastnosti vode in vodne pare Univerza v Ljubljani Fakulteta za strojništvo Laboratorij za termoenergetiko Tabele termodinamskih lastnosti vode in vodne pare po modelu IAPWS IF-97 izračunano z XSteam Excel v2.6 Magnus Holmgren, xsteam.sourceforge.net

Διαβάστε περισσότερα

1. Έντυπα αιτήσεων αποζημίωσης... 2 1.1. Αξίωση αποζημίωσης... 2 1.1.1. Έντυπο... 2 1.1.2. Πίνακας μεταφράσεων των όρων του εντύπου...

1. Έντυπα αιτήσεων αποζημίωσης... 2 1.1. Αξίωση αποζημίωσης... 2 1.1.1. Έντυπο... 2 1.1.2. Πίνακας μεταφράσεων των όρων του εντύπου... ΑΠΟΖΗΜΙΩΣΗ ΘΥΜΑΤΩΝ ΕΓΚΛΗΜΑΤΙΚΩΝ ΠΡΑΞΕΩΝ ΣΛΟΒΕΝΙΑ 1. Έντυπα αιτήσεων αποζημίωσης... 2 1.1. Αξίωση αποζημίωσης... 2 1.1.1. Έντυπο... 2 1.1.2. Πίνακας μεταφράσεων των όρων του εντύπου... 3 1 1. Έντυπα αιτήσεων

Διαβάστε περισσότερα

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

Matematika 1. Gabrijel Tomšič Bojan Orel Neža Mramor Kosta Matematika Gabrijel Tomšič Bojan Orel Neža Mramor Kosta 6. november 200 Poglavje 2 Zaporedja in številske vrste 2. Zaporedja 2.. Uvod Definicija 2... Zaporedje (a n ) = a, a 2,..., a n,... je predpis,

Διαβάστε περισσότερα

Podobnost matrik. Matematika II (FKKT Kemijsko inženirstvo) Diagonalizacija matrik

Podobnost matrik. Matematika II (FKKT Kemijsko inženirstvo) Diagonalizacija matrik Podobnost matrik Matematika II (FKKT Kemijsko inženirstvo) Matjaž Željko FKKT Kemijsko inženirstvo 14 teden (Zadnja sprememba: 23 maj 213) Matrika A R n n je podobna matriki B R n n, če obstaja obrnljiva

Διαβάστε περισσότερα

POROČILO. št.: P 1100/ Preskus jeklenih profilov za spuščen strop po točki 5.2 standarda SIST EN 13964:2004

POROČILO. št.: P 1100/ Preskus jeklenih profilov za spuščen strop po točki 5.2 standarda SIST EN 13964:2004 Oddelek za konstrkcije Laboratorij za konstrkcije Ljbljana, 12.11.2012 POROČILO št.: P 1100/12 680 01 Presks jeklenih profilov za spščen strop po točki 5.2 standarda SIST EN 13964:2004 Naročnik: STEEL

Διαβάστε περισσότερα

1. Definicijsko območje, zaloga vrednosti. 2. Naraščanje in padanje, ekstremi. 3. Ukrivljenost. 4. Trend na robu definicijskega območja

1. Definicijsko območje, zaloga vrednosti. 2. Naraščanje in padanje, ekstremi. 3. Ukrivljenost. 4. Trend na robu definicijskega območja ZNAČILNOSTI FUNKCIJ ZNAČILNOSTI FUNKCIJE, KI SO RAZVIDNE IZ GRAFA. Deinicijsko območje, zaloga vrednosti. Naraščanje in padanje, ekstremi 3. Ukrivljenost 4. Trend na robu deinicijskega območja 5. Periodičnost

Διαβάστε περισσότερα

5.1 Predpogojevanje. K 1 Ax = K 1 b,

5.1 Predpogojevanje. K 1 Ax = K 1 b, 5.1 Predpogojevanje Konvergenca metod podprostorov za reševanje linearnega sistema Ax = b je v veliki meri odvisna od razporeditve lastnih vrednosti (in lastnih vektorjev) matrike A. Kadar je konvergenca

Διαβάστε περισσότερα

Osnove matematične analize 2016/17

Osnove matematične analize 2016/17 Osnove matematične analize 216/17 Neža Mramor Kosta Fakulteta za računalništvo in informatiko Univerza v Ljubljani Kaj je funkcija? Funkcija je predpis, ki vsakemu elementu x iz definicijskega območja

Διαβάστε περισσότερα

*M * Osnovna in višja raven MATEMATIKA NAVODILA ZA OCENJEVANJE. Sobota, 4. junij 2011 SPOMLADANSKI IZPITNI ROK. Državni izpitni center

*M * Osnovna in višja raven MATEMATIKA NAVODILA ZA OCENJEVANJE. Sobota, 4. junij 2011 SPOMLADANSKI IZPITNI ROK. Državni izpitni center Državni izpitni center *M40* Osnovna in višja raven MATEMATIKA SPOMLADANSKI IZPITNI ROK NAVODILA ZA OCENJEVANJE Sobota, 4. junij 0 SPLOŠNA MATURA RIC 0 M-40-- IZPITNA POLA OSNOVNA IN VIŠJA RAVEN 0. Skupaj:

Διαβάστε περισσότερα

Spoznajmo sedaj definicijo in nekaj osnovnih primerov zaporedij števil.

Spoznajmo sedaj definicijo in nekaj osnovnih primerov zaporedij števil. Zaporedja števil V matematiki in fiziki pogosto operiramo s približnimi vrednostmi neke količine. Pri numeričnemu računanju lahko npr. število π aproksimiramo s števili, ki imajo samo končno mnogo neničelnih

Διαβάστε περισσότερα

Na pregledni skici napišite/označite ustrezne točke in paraboli. A) 12 B) 8 C) 4 D) 4 E) 8 F) 12

Na pregledni skici napišite/označite ustrezne točke in paraboli. A) 12 B) 8 C) 4 D) 4 E) 8 F) 12 Predizpit, Proseminar A, 15.10.2015 1. Točki A(1, 2) in B(2, b) ležita na paraboli y = ax 2. Točka H leži na y osi in BH je pravokotna na y os. Točka C H leži na nosilki BH tako, da je HB = BC. Parabola

Διαβάστε περισσότερα

Dragi polinom, kje so tvoje ničle?

Dragi polinom, kje so tvoje ničle? 1 Dragi polinom, kje so tvoje ničle? Vito Vitrih FAMNIT - Izlet v matematično vesolje 17. december 2010 Polinomi: 2 Polinom stopnje n je funkcija p(x) = a n x n + a n 1 x n 1 +... + a 1 x + a 0, a i R.

Διαβάστε περισσότερα

Iterativno reševanje sistemov linearnih enačb. Numerične metode, sistemi linearnih enačb. Numerične metode FE, 2. december 2013

Iterativno reševanje sistemov linearnih enačb. Numerične metode, sistemi linearnih enačb. Numerične metode FE, 2. december 2013 Numerične metode, sistemi linearnih enačb B. Jurčič Zlobec Numerične metode FE, 2. december 2013 1 Vsebina 1 z n neznankami. a i1 x 1 + a i2 x 2 + + a in = b i i = 1,..., n V matrični obliki zapišemo:

Διαβάστε περισσότερα

Navadne diferencialne enačbe

Navadne diferencialne enačbe Poglavje 6 Navadne diferencialne enačbe 6.1 Uvod Splošna rešitev navadne diferencialne enačbe n-tega reda F(x, y, y, y,..., y (n) ) = 0 je n-parametrična družina funkcij. Kadar želimo iz splošne rešitve

Διαβάστε περισσότερα

VEKTORJI. Operacije z vektorji

VEKTORJI. Operacije z vektorji VEKTORJI Vektorji so matematični objekti, s katerimi opisujemo določene fizikalne količine. V tisku jih označujemo s krepko natisnjenimi črkami (npr. a), pri pisanju pa s puščico ( a). Fizikalne količine,

Διαβάστε περισσότερα

Univerza v Ljubljani Fakulteta za računalništvo in informatiko MATEMATIKA. Polona Oblak

Univerza v Ljubljani Fakulteta za računalništvo in informatiko MATEMATIKA. Polona Oblak Univerza v Ljubljani Fakulteta za računalništvo in informatiko MATEMATIKA Polona Oblak Ljubljana, 04 CIP - Kataložni zapis o publikaciji Narodna in univerzitetna knjižnica, Ljubljana 5(075.8)(0.034.) OBLAK,

Διαβάστε περισσότερα

11.5 Metoda karakteristik za hiperbolične PDE

11.5 Metoda karakteristik za hiperbolične PDE 11.5 Metoda karakteristik za hiperbolične PDE Hiperbolična kvazi linearna PDE ima obliko au xx + bu xy + cu yy = f, (1) kjer so a, b, c, f funkcije x, y, u, u x in u y, ter velja b 2 4ac > 0. Če predpostavimo,

Διαβάστε περισσότερα

Matematika. Funkcije in enačbe

Matematika. Funkcije in enačbe Matematika Funkcije in enačbe (1) Nariši grafe naslednjih funkcij: (a) f() = 1, (b) f() = 3, (c) f() = 3. Rešitev: (a) Linearna funkcija f() = 1 ima začetno vrednost f(0) = 1 in ničlo = 1/. Definirana

Διαβάστε περισσότερα

Osnove sklepne statistike

Osnove sklepne statistike Univerza v Ljubljani Fakulteta za farmacijo Osnove sklepne statistike doc. dr. Mitja Kos, mag. farm. Katedra za socialno farmacijo e-pošta: mitja.kos@ffa.uni-lj.si Intervalna ocena oz. interval zaupanja

Διαβάστε περισσότερα

II. LIMITA IN ZVEZNOST FUNKCIJ

II. LIMITA IN ZVEZNOST FUNKCIJ II. LIMITA IN ZVEZNOST FUNKCIJ. Preslikave med množicami Funkcija ali preslikava med dvema množicama A in B je predpis f, ki vsakemu elementu x množice A priredi natanko določen element y množice B. Važno

Διαβάστε περισσότερα

CM707. GR Οδηγός χρήσης... 2-7. SLO Uporabniški priročnik... 8-13. CR Korisnički priručnik... 14-19. TR Kullanım Kılavuzu... 20-25

CM707. GR Οδηγός χρήσης... 2-7. SLO Uporabniški priročnik... 8-13. CR Korisnički priručnik... 14-19. TR Kullanım Kılavuzu... 20-25 1 2 3 4 5 6 7 OFFMANAUTO CM707 GR Οδηγός χρήσης... 2-7 SLO Uporabniški priročnik... 8-13 CR Korisnički priručnik... 14-19 TR Kullanım Kılavuzu... 20-25 ENG User Guide... 26-31 GR CM707 ΟΔΗΓΟΣ ΧΡΗΣΗΣ Περιγραφή

Διαβάστε περισσότερα

p 1 ENTROPIJSKI ZAKON

p 1 ENTROPIJSKI ZAKON ENROPIJSKI ZAKON REERZIBILNA srememba: moža je obrjea srememba reko eakih vmesih staj kot rvota srememba. Po obeh sremembah e sme biti obeih trajih srememb v bližji i dalji okolici. IREERZIBILNA srememba:

Διαβάστε περισσότερα

Matematika vaja. Matematika FE, Ljubljana, Slovenija Fakulteta za Elektrotehniko 1000 Ljubljana, Tržaška 25, Slovenija

Matematika vaja. Matematika FE, Ljubljana, Slovenija Fakulteta za Elektrotehniko 1000 Ljubljana, Tržaška 25, Slovenija Matematika 1 3. vaja B. Jurčič Zlobec 1 1 Univerza v Ljubljani, Fakulteta za Elektrotehniko 1000 Ljubljana, Tržaška 25, Slovenija Matematika FE, Ljubljana, Slovenija 2011 Določi stekališča zaporedja a

Διαβάστε περισσότερα

vezani ekstremi funkcij

vezani ekstremi funkcij 11. vaja iz Matematike 2 (UNI) avtorica: Melita Hajdinjak datum: Ljubljana, 2009 ekstremi funkcij več spremenljivk nadaljevanje vezani ekstremi funkcij Dana je funkcija f(x, y). Zanimajo nas ekstremi nad

Διαβάστε περισσότερα

Zapiski s predavanj predmeta Algoritmi in podatkovne strukture 2

Zapiski s predavanj predmeta Algoritmi in podatkovne strukture 2 Zapiski s predavanj predmeta Algoritmi in podatkovne strukture 2 Alenka Caserman 22. avgust 2006 Kazalo I Pozor 4 II Uvod 4 1 Algoritmi 4 1.1 Modeli računanja (namišljeni računalnik)............. 5 1.1.1

Διαβάστε περισσότερα

Enačba, v kateri poleg neznane funkcije neodvisnih spremenljivk ter konstant nastopajo tudi njeni odvodi, se imenuje diferencialna enačba.

Enačba, v kateri poleg neznane funkcije neodvisnih spremenljivk ter konstant nastopajo tudi njeni odvodi, se imenuje diferencialna enačba. 1. Osnovni pojmi Enačba, v kateri poleg neznane funkcije neodvisnih spremenljivk ter konstant nastopajo tudi njeni odvodi, se imenuje diferencialna enačba. Primer 1.1: Diferencialne enačbe so izrazi: y

Διαβάστε περισσότερα

Kotni funkciji sinus in kosinus

Kotni funkciji sinus in kosinus Kotni funkciji sinus in kosinus Oznake: sinus kota x označujemo z oznako sin x, kosinus kota x označujemo z oznako cos x, DEFINICIJA V PRAVOKOTNEM TRIKOTNIKU: Kotna funkcija sinus je definirana kot razmerje

Διαβάστε περισσότερα

3.1 Reševanje nelinearnih sistemov

3.1 Reševanje nelinearnih sistemov 3.1 Reševanje nelinearnih sistemov Rešujemo sistem nelinearnih enačb f 1 (x 1, x 2,..., x n ) = 0 f 2 (x 1, x 2,..., x n ) = 0. f n (x 1, x 2,..., x n ) = 0. Pišemo F (x) = 0, kjer je x R n in F : R n

Διαβάστε περισσότερα

Kvantni delec na potencialnem skoku

Kvantni delec na potencialnem skoku Kvantni delec na potencialnem skoku Delec, ki se giblje premo enakomerno, pride na mejo, kjer potencial naraste s potenciala 0 na potencial. Takšno potencialno funkcijo zapišemo kot 0, 0 0,0. Slika 1:

Διαβάστε περισσότερα

8. Posplošeni problem lastnih vrednosti

8. Posplošeni problem lastnih vrednosti 8. Posplošeni problem lastnih vrednosti Bor Plestenjak NLA 13. april 2010 Bor Plestenjak (NLA) 8. Posplošeni problem lastnih vrednosti 13. april 2010 1 / 15 Matrični šop Dani sta kvadratni n n matriki

Διαβάστε περισσότερα

Definicija. definiramo skalarni produkt. x i y i. in razdaljo. d(x, y) = x y = < x y, x y > = n (x i y i ) 2. i=1. i=1

Definicija. definiramo skalarni produkt. x i y i. in razdaljo. d(x, y) = x y = < x y, x y > = n (x i y i ) 2. i=1. i=1 Funkcije več realnih spremenljivk Osnovne definicije Limita in zveznost funkcije več spremenljivk Parcialni odvodi funkcije več spremenljivk Gradient in odvod funkcije več spremenljivk v dani smeri Parcialni

Διαβάστε περισσότερα

Integralni račun. Nedoločeni integral in integracijske metrode. 1. Izračunaj naslednje nedoločene integrale: (a) dx. (b) x 3 +3+x 2 dx, (c) (d)

Integralni račun. Nedoločeni integral in integracijske metrode. 1. Izračunaj naslednje nedoločene integrale: (a) dx. (b) x 3 +3+x 2 dx, (c) (d) Integralni račun Nedoločeni integral in integracijske metrode. Izračunaj naslednje nedoločene integrale: d 3 +3+ 2 d, (f) (g) (h) (i) (j) (k) (l) + 3 4d, 3 +e +3d, 2 +4+4 d, 3 2 2 + 4 d, d, 6 2 +4 d, 2

Διαβάστε περισσότερα

Kvantni računalnik. Avtor: Miha Muškinja Mentor: prof. dr. Norma Susana Mankoč Borštnik

Kvantni računalnik. Avtor: Miha Muškinja Mentor: prof. dr. Norma Susana Mankoč Borštnik Kvantni računalnik Avtor: Miha Muškinja Mentor: prof. dr. Norma Susana Mankoč Borštnik Vsebina predstavitve Moorov zakon, Osnove kvantnega računalnika: kvantni bit, kvantni register, Kvantna logična vrata,

Διαβάστε περισσότερα

Multivariatna analiza variance

Multivariatna analiza variance (MANOVA) MANOVA je multivariatna metoda za proučevanje odvisnosti med več odvisnimi (številskimi) in več neodvisnimi (opisnimi) spremenljivkami. (MANOVA) MANOVA je multivariatna metoda za proučevanje odvisnosti

Διαβάστε περισσότερα

Matematika 1. Gregor Dolinar. 2. januar Fakulteta za elektrotehniko Univerza v Ljubljani. Gregor Dolinar Matematika 1

Matematika 1. Gregor Dolinar. 2. januar Fakulteta za elektrotehniko Univerza v Ljubljani. Gregor Dolinar Matematika 1 Mtemtik 1 Gregor Dolinr Fkultet z elektrotehniko Univerz v Ljubljni 2. jnur 2014 Gregor Dolinr Mtemtik 1 Izrek (Izrek o povprečni vrednosti) Nj bo m ntnčn spodnj mej in M ntnčn zgornj mej integrbilne funkcije

Διαβάστε περισσότερα

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET SIGNALI I SISTEMI. Zbirka zadataka

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET SIGNALI I SISTEMI. Zbirka zadataka UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET Goran Stančić SIGNALI I SISTEMI Zbirka zadataka NIŠ, 014. Sadržaj 1 Konvolucija Literatura 11 Indeks pojmova 11 3 4 Sadržaj 1 Konvolucija Zadatak 1. Odrediti konvoluciju

Διαβάστε περισσότερα

Navadne diferencialne enačbe

Navadne diferencialne enačbe Navadne diferencialne enačbe Navadne diferencialne enačbe prvega reda V celotnem poglavju bo y = dy dx. Diferencialne enačbe z ločljivima spremeljivkama Diferencialna enačba z ločljivima spremeljivkama

Διαβάστε περισσότερα

Frekvenčna analiza neperiodičnih signalov. Analiza signalov prof. France Mihelič

Frekvenčna analiza neperiodičnih signalov. Analiza signalov prof. France Mihelič Frekvenčna analiza neperiodičnih signalov Analiza signalov prof. France Mihelič Vpliv postopka daljšanja periode na spekter periodičnega signala Opazujmo družino sodih periodičnih pravokotnih impulzov

Διαβάστε περισσότερα

Gimnazija Krˇsko. vektorji - naloge

Gimnazija Krˇsko. vektorji - naloge Vektorji Naloge 1. V koordinatnem sistemu so podane točke A(3, 4), B(0, 2), C( 3, 2). a) Izračunaj dolžino krajevnega vektorja točke A. (2) b) Izračunaj kot med vektorjema r A in r C. (4) c) Izrazi vektor

Διαβάστε περισσότερα

PROCESIRANJE SIGNALOV

PROCESIRANJE SIGNALOV Rešive pisega izpia PROCESIRANJE SIGNALOV Daum: 7... aloga Kolikša je ampliuda reje harmoske kompoee arisaega periodičega sigala? f() - -3 - - 3 Rešiev: Časova fukcija a iervalu ( /,/) je lieara fukcija:

Διαβάστε περισσότερα

Kotne funkcije poljubnega kota. Osnovne zveze med funkcijamo istega kota. Uporaba kotnih funkcij v poljubnem trikotniku. Kosinusni in sinusni izrek.

Kotne funkcije poljubnega kota. Osnovne zveze med funkcijamo istega kota. Uporaba kotnih funkcij v poljubnem trikotniku. Kosinusni in sinusni izrek. DN#3 (januar 2018) 3A Teme, ki jih preverja domača naloga: Kotne funkcije poljubnega kota. Osnovne zveze med funkcijamo istega kota. Uporaba kotnih funkcij v poljubnem trikotniku. Kosinusni in sinusni

Διαβάστε περισσότερα

1.3 Vsota diskretnih slučajnih spremenljivk

1.3 Vsota diskretnih slučajnih spremenljivk .3 Vsota diskretnih slučajnih spremenljivk Naj bosta X in Y neodvisni Bernoullijevo porazdeljeni spremenljivki, B(p). Kako je porazdeljena njuna vsota? Označimo Z = X + Y. Verjetnost, da je P (Z = z) za

Διαβάστε περισσότερα

Poglavje 7. Poglavje 7. Poglavje 7. Regulacijski sistemi. Regulacijski sistemi. Slika 7. 1: Normirana blokovna shema regulacije EM

Poglavje 7. Poglavje 7. Poglavje 7. Regulacijski sistemi. Regulacijski sistemi. Slika 7. 1: Normirana blokovna shema regulacije EM Slika 7. 1: Normirana blokovna shema regulacije EM Fakulteta za elektrotehniko 1 Slika 7. 2: Principielna shema regulacije AM v KSP Fakulteta za elektrotehniko 2 Slika 7. 3: Merjenje komponent fluksa s

Διαβάστε περισσότερα

REˇSITVE. Naloga a. b. c. d Skupaj. FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost 2. kolokvij 23.

REˇSITVE. Naloga a. b. c. d Skupaj. FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost 2. kolokvij 23. Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Verjetnost. kolokvij 3. januar 08 Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja. Nalog je 6,

Διαβάστε περισσότερα

POROČILO 3.VAJA DOLOČANJE REZULTANTE SIL

POROČILO 3.VAJA DOLOČANJE REZULTANTE SIL POROČILO 3.VAJA DOLOČANJE REZULTANTE SIL Izdba aje: Ljubjana, 11. 1. 007, 10.00 Jan OMAHNE, 1.M Namen: 1.Preeri paraeogramsko praio za doočanje rezutante nezporedni si s skupnim prijemaiščem (grafično)..dooči

Διαβάστε περισσότερα

8. Navadne diferencialne enačbe

8. Navadne diferencialne enačbe 8. Navadne diferencialne enačbe 8.1. Začetni problem prvega reda Iščemo funkcijo y(x), ki zadošča diferencialni enačbi y = f(x, y) in začetnemu pogoju y(x 0 ) = y 0, kjer je f dana dovolj gladka funkcija

Διαβάστε περισσότερα

Matematika 2. Diferencialne enačbe drugega reda

Matematika 2. Diferencialne enačbe drugega reda Matematika 2 Diferencialne enačbe drugega reda (1) Reši homogene diferencialne enačbe drugega reda s konstantnimi koeficienti: (a) y 6y + 8y = 0, (b) y 2y + y = 0, (c) y + y = 0, (d) y + 2y + 2y = 0. Rešitev:

Διαβάστε περισσότερα

Statistična analiza. doc. dr. Mitja Kos, mag. farm. Katedra za socialno farmacijo Univerza v Ljubljani- Fakulteta za farmacijo

Statistična analiza. doc. dr. Mitja Kos, mag. farm. Katedra za socialno farmacijo Univerza v Ljubljani- Fakulteta za farmacijo Statistična analiza opisnih spremenljivk doc. dr. Mitja Kos, mag. arm. Katedra za socialno armacijo Univerza v Ljubljani- Fakulteta za armacijo Statistični znaki Proučevane spremenljivke: statistični znaki

Διαβάστε περισσότερα

Inverzni problem lastnih vrednosti evklidsko razdaljnih matrik

Inverzni problem lastnih vrednosti evklidsko razdaljnih matrik Univerza v Ljubljani Fakulteta za računalništvo in informatiko Fakulteta za matematiko in fiziko Peter Škvorc Inverzni problem lastnih vrednosti evklidsko razdaljnih matrik DIPLOMSKO DELO UNIVERZITETNI

Διαβάστε περισσότερα

Tema 1 Osnove navadnih diferencialnih enačb (NDE)

Tema 1 Osnove navadnih diferencialnih enačb (NDE) Matematične metode v fiziki II 2013/14 Tema 1 Osnove navadnih diferencialnih enačb (NDE Diferencialne enačbe v fiziki Večina osnovnih enačb v fiziki je zapisana v obliki diferencialne enačbe. Za primer

Διαβάστε περισσότερα

Funkcije več spremenljivk

Funkcije več spremenljivk DODATEK C Funkcije več spremenljivk C.1. Osnovni pojmi Funkcija n spremenljivk je predpis: f : D f R, (x 1, x 2,..., x n ) u = f (x 1, x 2,..., x n ) kjer D f R n imenujemo definicijsko območje funkcije

Διαβάστε περισσότερα

(Ne)rešljiva Rubikova kocka in grupe

(Ne)rešljiva Rubikova kocka in grupe (Ne)rešljiva Rubikova kocka in grupe Maša Lah, Sabina Boršić, Klara Drofenik Mentor: Rok Gregorič Matematično raziskovalno srečanje 24. avgust 2016 Povzetek Cilj našega projekta je bil ugotoviti kriterij

Διαβάστε περισσότερα

Algoritmi in podatkovne strukture 2. Številska drevesa

Algoritmi in podatkovne strukture 2. Številska drevesa Algoritmi in podatkovne strukture 2 Številska drevesa osnove, PATRICIA, LC Trie Andrej Brodnik: Algoritmi in podatkovne strukture 2 / Številska drevesa osnove, PATRICIA, LC Trie (03) 1 Osnove rekurzivna

Διαβάστε περισσότερα

Odvode odvisnih spremenljivk po neodvisni spremenljivki bomo označevali s piko: Sistem navadnih diferencialnih enačb prvega reda ima obliko:

Odvode odvisnih spremenljivk po neodvisni spremenljivki bomo označevali s piko: Sistem navadnih diferencialnih enačb prvega reda ima obliko: 4 Sisemi diferencialnih enačb V prakičnih primerih večkra naleimo na več diferencialnih enačb, ki opisujejo določen pojav in so medsebojno povezane edaj govorimo o sisemih diferencialnih enačb V eh enačbah

Διαβάστε περισσότερα

Kvadratne forme. Poglavje XI. 1 Definicija in osnovne lastnosti

Kvadratne forme. Poglavje XI. 1 Definicija in osnovne lastnosti Poglavje XI Kvadratne forme V zadnjem poglavju si bomo ogledali še eno vrsto preslikav, ki jih tudi lahko podamo z matrikami. To so tako imenovane kvadratne forme, ki niso več linearne preslikave. Kvadratne

Διαβάστε περισσότερα

Domača naloga 6: dušeno nihanje

Domača naloga 6: dušeno nihanje Domača naloga 6: dušeno nihanje Vaje iz predmeta Numerične metode v fiziki Igor Grešovnik Kazalo: 1 Naloga 6a Nihanje... 1.1 Enačbe nihanja... 1. Numerično reševanje problema... 3 1..1 Reševanje sistema

Διαβάστε περισσότερα

SEMINARSKA NALOGA Funkciji sin(x) in cos(x)

SEMINARSKA NALOGA Funkciji sin(x) in cos(x) FAKULTETA ZA MATEMATIKO IN FIZIKO Praktična Matematika-VSŠ(BO) Komuniciranje v matematiki SEMINARSKA NALOGA Funkciji sin(x) in cos(x) Avtorica: Špela Marinčič Ljubljana, maj 2011 KAZALO: 1.Uvod...1 2.

Διαβάστε περισσότερα

Postavitev hipotez NUJNO! Milena Kova. 10. januar 2013

Postavitev hipotez NUJNO! Milena Kova. 10. januar 2013 Postavitev hipotez NUJNO! Milena Kova 10. januar 2013 Osnove biometrije 2012/13 1 Postavitev in preizku²anje hipotez Hipoteze zastavimo najprej ob na rtovanju preizkusa Ob obdelavi jih morda malo popravimo

Διαβάστε περισσότερα

Vaje: Električni tokovi

Vaje: Električni tokovi Barbara Rovšek, Bojan Golli, Ana Gostinčar Blagotinšek Vaje: Električni tokovi 1 Merjenje toka in napetosti Naloga: Izmerite tok, ki teče skozi žarnico, ter napetost na žarnici Za izvedbo vaje potrebujete

Διαβάστε περισσότερα

Metoda voditeljev. Poglavje 2

Metoda voditeljev. Poglavje 2 Poglavje 2 Metoda voditeljev Velika prednost metode hierarhičnega gručenja, ki smo jo spoznali v prejšnjem poglavju, je odkrivanje strukture skupin v podatkih, ki jih lahko enostavno ponazorimo v vizualizaciji

Διαβάστε περισσότερα

diferencialne enačbe - nadaljevanje

diferencialne enačbe - nadaljevanje 12. vaja iz Matematike 2 (VSŠ) avtorica: Melita Hajdinjak datum: Ljubljana, 2009 diferencialne enačbe - nadaljevanje Ortogonalne trajektorije Dana je 1-parametrična družina krivulj F(x, y, C) = 0. Ortogonalne

Διαβάστε περισσότερα

1. VAJA IZ TRDNOSTI. (linearna algebra - ponovitev, Kroneckerjev δ i j, permutacijski simbol e i jk )

1. VAJA IZ TRDNOSTI. (linearna algebra - ponovitev, Kroneckerjev δ i j, permutacijski simbol e i jk ) VAJA IZ TRDNOSTI (lnearna algebra - ponovtev, Kroneckerev δ, permutacsk smbol e k ) NALOGA : Zapš vektor a = [, 2,5,] kot lnearno kombnaco vektorev e = [,,,], e 2 = [,2,3,], e 3 = [2,,, ] n e 4 = [,,,]

Διαβάστε περισσότερα

Iskanje najkrajs e poti

Iskanje najkrajs e poti Iskanje najkrajs e poti na Vojnovic, I. gimnazija v Celju nja Petkovic, Gimnazija Bez igrad, Ljubljana Matej Ros karic, SERS, Maribor Mentor: Uros Kuzman UL FMF 1 Uvod V vsakdanjem z ivljenju se velikokrat

Διαβάστε περισσότερα

FAKULTETA ZA STROJNIŠTVO Matematika 4 Pisni izpit 22. junij Navodila

FAKULTETA ZA STROJNIŠTVO Matematika 4 Pisni izpit 22. junij Navodila FAKULTETA ZA STROJNIŠTVO Matematika 4 Pisni izpit 22 junij 212 Ime in priimek: Vpisna št: Navodila Pazljivo preberite besedilo naloge, preden se lotite reševanja Veljale bodo samo rešitve na papirju, kjer

Διαβάστε περισσότερα

Prepoznavanje krožnic na digitalnih slikah

Prepoznavanje krožnic na digitalnih slikah Univerza v Ljubljani Fakulteta za računalništvo in informatiko Domen Kren Prepoznavanje krožnic na digitalnih slikah DIPLOMSKO DELO UNIVERZITETNI INTERDISCIPLINARNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO

Διαβάστε περισσότερα