skai čių diktavimas

Click here to load reader

Upload: jonah-bentley

Post on 02-Jan-2016

33 views

Category:

Documents


3 download

DESCRIPTION

Skai čių diktavimas. Ką mes turime?. Vieną ilgą skaičių 1410022 Keletą (tikriausiai) trumpesnių skaičių ir jų ištarimo „kainas“ 010 110 210 410 1415 10010. Ką mums reikia padaryti?. Duotąjį ilgą skaičių reikia išskaidyti į dalis. 141-002-2 - PowerPoint PPT Presentation

TRANSCRIPT

Slide 1

Skaii diktavimas

K mes turime?Vien ilg skaii1410022Kelet (tikriausiai) trumpesni skaii ir j itarimo kainas010110210410141510010K mums reikia padaryti?Duotj ilg skaii reikia iskaidyti dalis.141-002-2Dalys turi bti pateiktame (trumpesni skaii) srae.1-4-1-0-0-2-2Parinkt dali kain suma turi bti maiausia.14-100-2-2Kaip sprsti?Paskutini n-i skaitmen geriausias iskaidymas nepriklauso nuo pirmj i skaitmen iskaidymo.Tai dinaminis programavimas.Skaiiuojam kaina(i) praddami nuo i = n iki i = 1.

Kaip skaiiuoti kaina(i)?Skaiiuokime, pavyzdiui, kaina(3), t.y. maiausi 10022 iskaidymo kain.Patikriname visus galimus i skaitmen pradios itarimo bdus. iuo atveju tai 1 ir 100.Pirmojo bdo kaina yra [kaina itarti 1] + [kaina itarti 0022 (t.y. kaina(4))] = 10 + 40 = 50Antrojo bdo kaina yra [kaina itarti 100] + [kaina itarti 22 (t.y. kaina(6))] = 10 + 20 = 30Renkams pigiausi bd.Kaip patikrinti, ar skaitmen sek galime itarti ir kiek tai kainuoja?Trivialus lyginimas su kiekvienu srao elementu utruks O(LN). Tai gresia O(LN) algoritmu.Galima naudoti TRIE.TRIE? Kas tai?Duomen struktra naudojama odynams.Tai yra medis.Kiekviena briauna yra pavadinta tam tikru skaitmeniu.Kiekviena virn turi daugiausiai vien vaik su tam tikro pavadinimo briauna.Kai kurios virns turi poym. Briaun pavadinimai kelyje nuo aknies iki virns su poymiu sudaro odyne laikom od (ms atveju, skaii).TRIE pavyzdysMs nagrinjamame pavyzdyje poymis yra skaiiaus itarimo kaina.TRIE galt atrodyti taip:-100101102104154-0100Kaip panaudoti TRIE?Iekodami kakokio skaiiaus, pradedame nuo aknies einame briaunomis su skaiiaus skaitmenimis.Jei iekome skaiiaus 100, pirmiausia einame briauna su pavadinimu 1, tada briauna pavadinimu 0, ir vl briauna pavadinimu 0.Jei virn, kuri patekom, turi poym, tai is yra iekomo skaiiaus itarimo kaina.Jei virn poymio neturi arba iekojimo metu nerandame norimos briaunos, skaiiaus itarti negalima.Patikrinimas utrunka O(L) laiko, algoritmas O(L).Bet reikt geriau...Tikrindami ar galime itarti skaii 100, galime pradti nuo virns, ties kuria radom 10, ir paeiti briauna su paskutiniu skaitmeniu (0).Taip galime ibandyti visus skaiiaus pradios itarimo variantus (ir apskaiiuoti kaina(i)) per O(L) laiko. Visas algoritmas utruks O(L).Ei! Mums reikia ne kainos, o iskaidymo!Skaiiuodami kaina(i), pasiymime, kokio ilgio skaii labiausiai apsimoka itarti vienu ypu.Naudodamiesi iais duomenimis, galime atkurti vis skaiiaus skaidym.TestaiTesto numerisSkaiiaus ilgisItariam skaii kiekis110202500500350100004100075755100121861003000071000100008206000092564567105010011100010000Rezultatai