je sema koja omogućava pretraživanje informacija u tabelama, da bi se izbeglo korišćenje logičkih naredbi (if ili case). Sve što se može uraditi sa lo

Similar documents
Projektovanje paralelnih algoritama II

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

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

Uvod u relacione baze podataka

Mathcad sa algoritmima

Red veze za benzen. Slika 1.

TEORIJA SKUPOVA Zadaci

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

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

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

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

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

3. Programiranje u Matlab-u

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

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

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

O homomorfizam-homogenim geometrijama ranga 2

Matrice u Maple-u. Upisivanje matrica

Quasi-Newtonove metode

An Algorithm for Computation of Bond Contributions of the Wiener Index

NAPREDNI FIZIČKI PRAKTIKUM II studij Geofizika POLARIZACIJA SVJETLOSTI

Oracle Spatial Koordinatni sustavi, projekcije i transformacije. Dalibor Kušić, mag. ing. listopad 2010.

PRECIPITATION FORECAST USING STATISTICAL APPROACHES UDC 55:311.3

Konstrukcija i analiza algoritama

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

Funkcijske jednadºbe

6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA

Fibonaccijev brojevni sustav

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

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

1.1 Algoritmi. 2 Uvod

Fizička organizacija BP Data Warehouse sistema

AIR CURTAINS VAZDU[NE ZAVESE V H

O aksiomu izbora, cipelama i čarapama

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

ANALYTICAL AND NUMERICAL PREDICTION OF SPRINGBACK IN SHEET METAL BENDING

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

KRITERIJI KOMPLEKSNOSTI ZA K-MEANS ALGORITAM

VREMENSKE SERIJE U FINANSIJAMA: ARCH I GARCH

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA

BROJEVNE KONGRUENCIJE

IMPROVEMENT OF HIPPARCOS PROPER MOTIONS IN DECLINATION

Neke primene teorije fazi skupova i fazi logike u procesiranju slika

A STUDY ON NATURAL CONVECTION HEAT TRANSFER IN COMPLEX BOUNDARIES

Konstrukcija i analiza algoritama

U VOD U ALGOR IT ME I S T RUKT URE P ODATAK A

Uvod u dinamičko programiranje

Šta je to mašinsko učenje?

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

DISTRIBUIRANI ALGORITMI I SISTEMI

DYNAMIC HEAT TRANSFER IN WALLS: LIMITATIONS OF HEAT FLUX METERS

Metrički prostori i Riman-Stiltjesov integral

povezuju tačke na četiri različita načina (pravom linijom, splajnom,

UNIVERZITET U BEOGRADU MATEMATIČKI FAKULTET

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

Metode izračunavanja determinanti matrica n-tog reda

Metoda parcijalnih najmanjih kvadrata: Regresijski model

DISKRETNI LOGARITAM. 1 Uvod. MAT-KOL (Banja Luka) ISSN (p), ISSN (o) Vol. XVII (2)(2011), 43-52

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

Ariana Trstenjak Kvadratne forme

Prsten cijelih brojeva

Grafovi. Osnovni algoritmi sa grafovima. Predstavljanje grafova

Karakteri konačnih Abelovih grupa

DRUGI KOLOKVIJ ZADACI ZA VJEŽBU. 1. zadatak. Za rad s bazom podataka moja_baza koristimo naredbu:

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

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

Asocijativna polja POGLAVLJE Ključevi kao cijeli brojevi

HENDERSON'S APPROACH TO VARIANCE COMPONENTS ESTIMATION FOR UNBALANCED DATA UDC Vera Djordjević, Vinko Lepojević

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

Didaktički aspekti matematičkog modeliranja

BOSNA I HERCEGOVINA TRŽIŠTE OSIGURANJA 2009

Univerzitet u Beogradu

A SPECTRAL ATLAS OF λ BOOTIS STARS

CALCULATION OF VELOCITY DISPERSION OF THE NEARBY GALAXIES USING DIFFERENT STELLAR TEMPLATE LIBRARIES

Nonlinear Statistical Methodology Applied on Modeling the Growth Correlation of Some Global Macroeconomic Parameters

Zanimljive rekurzije

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS

DEVELOPMENT OF MATHEMATICAL MODELS TO PREDICT THE EFFECT OF INPUT PARAMETERS ON FEED RATE OF A RECIPROCATORY TUBE FUNNEL FEEDER

APPLICATION OF THOMAS-FERMI MODEL TO FULLERENE MOLECULE AND NANOTUBE UDC 547. Yuri Kornyushin

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1

TEHNIČKO REŠENJE. Algoritam za sinhronizaciju rada prediktora DRAM memorija

UNIVERZITET U NIŠU PRIRODNO-MATEMATIČKI FAKULTET. mr Dragan Stevanović NEKE KOMPOZICIJE GRAFOVA I GRAFOVI SA CELOBROJNIM SPEKTROM

UNSTABILITY OF FOOD PRODUCTION PER CAPITA AND POPULATION: ASIA. Vesna Jablanović 1

AKSIOME TEORIJE SKUPOVA

SEMINARSKI RAD IZ VEROVATNOĆE I STATISTIKE. TEMA: Test za proveru znanja

LLL Seminari u okviru TEMPUS projekta

ALGORITAM FAKTORIZACIJE GNFS

ANALYSIS OF THE RELIABILITY OF THE "ALTERNATOR- ALTERNATOR BELT" SYSTEM

Metode praćenja planova

VELOCITY PROFILES AT THE OUTLET OF THE DIFFERENT DESIGNED DIES FOR ALUMINIUM EXTRUSION

The Prediction of. Key words: LD converter, slopping, acoustic pressure, Fourier transformation, prediction, evaluation

NAPREDNI FIZIČKI PRAKTIKUM 1 studij Matematika i fizika; smjer nastavnički MJERENJE MALIH OTPORA

AKSIOM IZBORA I EKVIVALENCIJE

Procjena funkcije gustoće

FTN Novi Sad Katedra za motore i vozila. Drumska vozila Uputstvo za izradu vučnog proračuna motornog vozila. 1. Ulazni podaci IZVOR:

Andrea Rožnjik. VaR KAO MERA RIZIKA U OPTIMIZACIJI PORTFOLIA. - magistarska teza - Novi Sad, 2008.

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

Kratak kurs MatLab-a

Numeričke metode u ekonomiji Dr. sc. Josip Matejaš, EFZG

Transcription:

1 od 23

je sema koja omogućava pretraživanje informacija u tabelama, da bi se izbeglo korišćenje logičkih naredbi (if ili case). Sve što se može uraditi sa logičkim naredbama može da se uradi i sa tabelama. Kako se logika komplikuje, to su tabele praktičnije za upotrebu. Da bismo klasifikovali karaktere u slova, znake interpunkcije i cifre, možemo koristiti komplikovanu logiku: 2 od 23

Java kod if ( ( ( 'a' <= inputchar ) && ( inputchar <= 'z' ) ) ( ( 'A' <= inputchar ) && ( inputchar <= 'Z' ) ) ) { chartype = CharacterType.Letter; } else if ( ( inputchar == ' ' ) ( inputchar == ',' ) ( inputchar == '.' ) ( inputchar == '!' ) ( inputchar == '(' ) ( inputchar == ')' ) ( inputchar == ':' ) ( inputchar == ';' ) ( inputchar == '?' ) ( inputchar == '-' ) ) { chartype = CharacterType.Punctuation; } else if ( ( '0' <= inputchar ) && ( inputchar <= '9' ) ) { chartype = CharacterType.Digit; } 3 od 23

Ako koristimo pretraživačke tabele, možemo da sačuvamo tip svakog karaktera u niz, kome se pristupa po tipu karaktera. chartype = chartypetable[ inputchar ]; Ovde se podrazumeva da je niz chartypetable inicijalizovan ranije. 4 od 23

Prvi problem je način na koji cemo tražiti vrednosti u tabeli. Mogu se koristiti odredjeni podaci da bi se tabeli direktno pristupilo. Ako podatke klasifikujemo po mesecima, mozemo koristiti niz sa indeksima od 1 do 12. Ako podatke moramo da klasifikujemo po broju socijalnog osiguranja, tada koristimo druge pristupe. Mogući su sledeći načini: Direktni pristup Indeksni pristup Stepenasti pristup 5 od 23

Drugi problem koji se javlja je šta čuvati u tabeli. U nekim slučajevima rezultati pretraživanja su podaci. Tada se podaci mogu staviti u tabelu. Rezultat pretraživanja može biti i akcija. U tom slučaju čuvamo kod, koji opisuje akciju ili referencu na funkciju koja implementira tu akciju. Tabela tada postaje dosta komplikovanija. 6 od 23

Direktan pristup omogućava da uvek možete pristupiti elementu koji vas ineresuje Primer dani u mesecu: Odrediti broj dana u mesecu. Nespretan način je napisati veliku if naredbu 7 od 23

If (month = 1) Then days= 31 ElseIf ( month = 2 ) Then days=28 ElseIf ( month = 3 ) Then days = 31 ElseIf ( month = 4 ) Then days = 30 ElseIf ( month = 5 ) Then days = 31 ElseIf ( month = 6 ) Then days = 30 ElseIf ( month = 7 ) Then days = 31 ElseIf ( month = 8 ) Then days = 31 End If 8 od 23

Lakši i modifikovaniji način da se to uradi je da postavimo podatke u tabelu. U Visual Basic-u, prvo postavljamo tabelu Dim dayspermonth() As Integer = _{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } Sada umesto duge if naredbe, imamo samo days = dayspermonth( month-1 ). Za prestupnu godinu imamo days = dayspermonth( month-1, LeapYearIndex() ), gde LeapYearIndex () može imati vrednosti 0 ili 1 Možemo koristiti month promenljivu da pretražimo neki podatak iz tabele. 9 od 23

Želimo da računamo ratu za medicinsko osiguranje, i imamo rate koje variraju u odnosu na godine, pol,bračno stanje, da li osoba pusi ili ne. if ( gender == Gender.Female ) { if ( maritalstatus == MaritalStatus.Single ) { if ( smokingstatus == SmokingStatus.NonSmoking ) { if ( age < 18 ) { rate = 200.00; } else if ( age == 18 ) { rate = 250.00; } else if ( age == 19 ) { rate = 300.00; }... 10 od 23

else if ( 65 < age ) { rate = 450.00; } else { if ( age < 18 ) { rate = 250.00; } else if ( age == 18 ) { rate = 300.00; } else if ( age == 19 ) { rate = 350.00; }... else if ( 65 < age ) { rate = 575.00; } } else if ( maritalstatus == MaritalStatus.Married )...} 11 od 23

Možemo da stavimo rate u odvojene nizove za svaku od godina, ali je bolje rešenje da ih stavimo u nizove za svaki od faktora koje imamo. Public Enum SmokingStatus SmokingStatus_First = 0 SmokingStatus_Smoking = 0 SmokingStatus_NonSmoking = 1 SmokingStatus_Last = 1 End Enum Public Enum Gender Gender_First = 0 Gender_Male = 0 Gender_Female = 1 Gender_Last = 1 End Enum Public Enum MaritalStatus MaritalStatus_First = 0 MaritalStatus_Single = 0 MaritalStatus_Married = 1 MaritalStatus_Last = 1 End Enum 12 od 23

Const MAX_AGE As Integer = 125 Dim ratetable ( SmokingStatus_Last, Gender_Last, MaritalStatus_Last, _MAX_AGE ) As Double Podaci se mogu smestiti u niz naredbom dodele, čitanjem sa diska, računanjem podataka. Kada smo to sredili, računamo ratu sa : rate = ratetable( smokingstatus, gender, maritalstatus, age ) Pretraživačka tabela je lakša za čitanje i modifikovanje, zauzima manje prostora i brže se izvršava. 13 od 23

Kada koristite indekse, koristite primarne podatke da biste našli ključ indeksne tabele i zatim na osnovu vrednosti iz indeksne tabele, tražite glavni podatak koji vas interesuje. Pretpostavimo da vodite skladište i imate inventar od oko 100 stavki. Svaka stavka sadrži četvorocifreni serijski broj od 0000 do 9999. U ovom slučaju, ako želite da vam serijski broj bude ključ u tabeli koja opisuje neke aspekte svake stavke, setujemo indeksni niz sa 10,000 unosa ( od 0 do 9999). Niz je prazan izuzev za 100 unosa koji odgovaraju serijskim brojevima za 100 stavki u skladištu. Na sledecoj slici se vidi da ovi unosi pokazuju na tabelu opisa stavki, koja ima daleko manje od 10,000 unosa. 14 od 23

Tabelama pristupamo pomoću indeksa. Postoje dve prednosti ovakvog pristupa. Prvo, ako je bilo koji unos u glavnoj pretraživačkoj tabeli veliki, potrebno je mnogo manje prostora da se napravi indeksni niz, sa puno izgubljenog prostora nego što je potrebno da se napravi glavna pretraživačka tabela, sa puno izgubljenog prostora. Na primer, neka glavna tabela zauzima 100B-ova po unosu i neka indeksni niz zauzima 2B po unosu. Dalje, neka glavna tabela ima 100 unosa i da podaci korišćeni za pristup imaju 10,000 mogućih vrednosti. 15 od 23

U tom slučaju, izbor je između indeksa sa 10,000 unosa ili glavne tabele sa isto toliko unosa. Ako koristimo indeks, ukupna iskorišćena memorija je 20,000B. U suprotnom, ako se odreknemo strukture indeksa i izgubimo prostor u glavnoj tabeli, ukupna iskorišćena memorija je 1,000,000B. Druga prednost je ta da čak i da ne sačuvate prostor korišćenjem indeksa, ponekad je jeftinije da manipulišete unosima u indeksu nego u glavnoj tabeli. Na primer, ako imate tabelu sa imenima zaposlenih,datumima zapošljavanja i platama, možete napraviti jedan indeks koji pristupa tabeli preko imena zaposlenog, drugi koji pristupa tabeli preko datuma zapošljavanja,i treći koji pristupa preko plate. 16 od 23

Konačna prednost šeme pristupa preko indeksa je generalno prednost održavanja glavne tabele. Podaci kodirani u tabelama se lakše održavaju nego podaci ugrađeni u kod. Kod za pristupanje indeksu može da se stavi u sopstvenu funkciju i ta funkcija da se poziva kada je potrebno dobiti ključ iz tabele za serijski broj. Kada je potrebno promeniti tabelu, može se promeniti šema pristupa indeksu ili da se izvrši promena na još jednu šemu pretraživačke tabele u celosti. Pristup šemi će biti lakši, ako se pristupi indeksu ne šire kroz program. 17 od 23

Ova metoda nije direktna kao indeksna struktura ali ne troši toliko memorijskog prostora. Generalna ideja,koja je prikazana na slici, je da su unosi u tabeli validni za raspon podataka. 18 od 23

Na primer, ako pišemo program za ocene, granice unosa B mogu biti od 75 do 90 procenata. Na primer: 90.0% A < 90.0% B < 75.0% C < 65.0% D < 50.0% F Ovo su loše granice za pretraživačku tabelu, zato što se ne mogu koristiti jednostavni podaci- funkcija transformacije ključa u slova A do F. Indeksna šema bi bila čudna zato što su brojevi sa decimalnom tačkom. U ovoj metodi, u tabelu postavljamo sve gornje granice, zatim pomoću petlje proveravamo rezultate poredeći sa tim gornjim granicama. Kada pronadjemo tačku u kojoj rezultat premašuje gornju granicu, znamo koja je ocena. Gornje granice treba izabrati da budu odgovarajuće. 19 od 23

' set up data for grading table Dim rangelimit() As Double = { 50.0, 65.0, 75.0, 90.0, 100.0 } Dim grade() As String = { "F", "D", "C", "B", "A" } maxgradelevel = grade.length 1... ' assign a grade to a student based on the student's score gradelevel = 0 studentgrade = "A" While ( ( studentgrade = "A" ) and ( gradelevel < maxgradelevel ) ) If ( studentscore < rangelimit( gradelevel ) ) Then studentgrade = grade( gradelevel ) End If gradelevel = gradelevel + 1 Wend Prednost ovog pristupa je što radi dobro i sa neregularnim podacima. Primer sa ocenama je jednostavan, mada su ocene dodeljene neregularnim intervalima, brojevi su okrugli, završavaju sa 0 i sa 5. 20 od 23

Probability Insurance Claim Amount 0.458747 $0.00 0.547651 $254.32 0.627764 $514.77 0.776883 $747.82 0.893211 $1,042.65 0.957665 $5,887.55 0.976544 $12,836.98 0.987889 $27,234.12... Ovakvi brojevi ne mogu se dobro transformisati u tabelarne ključeve. Ovde je stepenasti pristup odgovor. Ako se granice ocena moraju promeniti, program se lako može prilagoditi modifikovanjem unosa u RangeLimit nizu. Bitno je pokriti slučaj na svakoj gornjoj granici ove metode. Pretražiti tako da stavke budu u bilo kojoj granici izuzev najveće, i da ostatak stavki upadne u najveću granicu. Ponekad ovo zahteva postavljanje veštačke vrednosti za najveću granicu.voditi računa da se ne pravi greška sa < I <=. Petlja mora da se završava odgovarajuće, sa vrednostima koje upadaju u gornje granice i da granice budu korektno postavljene. 21 od 23

Koristite binarnu pretragu pre sekvencijalne pretrage U primeru sa ocenama, petlja koja dodeljuje ocene, sekvencijalno prolazi kroz granice ocena. Ako bismo imali veću listu, sekvencijalna pretraga je spora. Ona se može zameniti kvazi-binarnom pretragom. Kod kvazi binarne pretrage, očekujemo da pronadjemo pravu kategoriju za vrednost. Algoritam mora korektno da odredi gde vrednost treba da upadne. Koristite indeksni pristup umesto stair-step tehnike Brzina izvršavanja pretrage u stair-step metodi moze biti zabrinjavajuća. Može se dodati indeksna struktura koja će je ubrzati sa svojim direktnim pristupom. Alternativa nije dobra u svim slučajevima. Ako imate 100 diskretnih poena izraženih u procentima, cena memorije koju indeksni niz zauzima se neće isplatiti. U slučaju brojeva kao što su 0.458747 i 0.547651, ne može se setovati indeksna šema zbog ključeva. Bolje je težiti dobrom rešenju i izbeći katastrofu nego tragati za najboljim rešenjem (Lampson 1984.) 22 od 23

Tabele obezbedjuju alternativu komplikovanoj logici i nasledjenim strukturama. Jedno važno razmatranje o korišćenju tabela je način na koji im pristupamo. To može biti direktno, indeksno ili stepenasti pristup. Još jedna važna stvar je šta tačno staviti u tabelu. 23 od 23