uždavinys “lenktyn Ė s” 2007, daugai vilius visockas

Post on 08-Jan-2016

51 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

Slide 1 of 316. Uždavinys “LENKTYN Ė S” 2007, Daugai Vilius Visockas. Turinys. Uždavinio sąlygos pristatymas “ Paprastas ” uždavinio sprendimas “ Advance d ” uždavinio sprendimas Kaip nereikėjo daryti Tiesioginė lenktynės transliacija. S ąlygos pristatymas. Lenktyniauja N ma šinų. - PowerPoint PPT Presentation

TRANSCRIPT

Lenktynės

Uždavinys“LENKTYNĖS”

2007, DaugaiVilius Visockas

Slide 1 of 316

Lenktynės

Turinys

• Uždavinio sąlygos pristatymas

• “Paprastas” uždavinio sprendimas

• “Advanced” uždavinio sprendimas

• Kaip nereikėjo daryti

• Tiesioginė lenktynės transliacija

Lenktynės

Uždavinio lenktynės sprendimas

0

10

20

30

40

50

60

70

80

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31

Lenktynės

Sąlygos pristatymas

• Lenktyniauja N mašinų.

• Jos važiuoja įvairiais grečiais.

• Jos startuoja skirtingu laiku.

• Norime sužioti kaip išsidėstys po K pirmųjų lenkimų.

• Nėra dviejų lenkimų vienu metu

• Po K lenkimų visos mašinos bus jau išvažiavusios

Lenktynės

Paprastas sprendimas(bet teisingas)

Lenktynės

Sprendimas (1)

• Nagrinėti visas galimas mašinų poras (N x N), skaičiuoti jų lenkimosi laiką, laikus surikiuoti ir išrinkti K-jo lenkimo laiką.

• Apskaičiuoti kiekvienos mašinos nuvažiuotą atstumą po K-ojo lenkimo.

• Surikiuoti mašinas pagal nuvažiuotą atstumą.

Lenktynės

Kaip nereikėjo spręsti (cont.)

1. “Vienos minutės” sprendimas

Daroma prielaida, kad per vienutę minutę

įvyksta ne daugiau nei vienas lenkimas, nors

sąlygoje pasakyta, kad tiesiog nėra jokių dviejų

lenkimų vienu metu.

Lenktynės

Kaip nereikėjo spręsti (cont.)

Bėgiko ir vežlio paradoksas: bėgikas niekada neaplenks vėžlio!

Lenktynės

Sprendimasnaudojant Heap duomenų struktūrą

Lenktynės

Faktai

• Įmanomas daugiausiai vienas lenkimas imant bet kokią mašinų porą.

• Lenkimo tarp dviejų mašinų gali ir nebūti.

• Jei mašinos važiuoja vienodu greičiu, lenkimo nebus niekada.

• Lenkimas bus tik tada, jei viena mašina važiuoja greičiau už kitą ir išvažiuoja vėliau.

Lenktynės

Sprendimas naudojant heap’ą.• Susirikiuojame mašinas pagal išvykimo laiką

Pastaba. skaičius - mašinos numeris

1

laikasstartas greitis

1000 500

300 500

200 600

900 200

1200 300

2

3

4

5

Lenktynės

Sprendimas naudojant heap’ą.

3 2 4 1 5

• Tikriname ar gretimos mašinų poros lenkiasi.

• Jeigu lenkiasi, lenkimo įvykį dedame į heap’ą.

Lenktynės

Kas tas

“HEAP’as” ???

Paspauskite čia ir sužinosite kas yra heapas!

Lenktynės MAGIC BUTTON X

Lenktynės MAGIC BUTTON X

Lenktynės

Heap’as

• Duomenų struktūra, gebanti– Greitai surasti mažiausią elementą– Ištrinti/Pašalinti elementą.

Puikiai pritaikomas Dijikstros algoritmui.

Lenktynės

Heap’as2

9 6

10 15 8

Heap’as – pilnas dvejetainis medis

Kiekvienas iš vaikų yra didesnis už tėvą

Lenktynės

Heap’asElemento įterpimas (1)

2

9 6

10 15 8

Pirmas elementas dedamas pirmoje laisvoje vietoje.

Lenktynės

Heap’asElemento įterpimas (2)

2

9 6

10 15 8 1

Pirmas elementas dedamas pirmoje laisvoje vietoje.

Lenktynės

Heap’asElemento įterpimas (3)

2

9 6

10 15 8 1

Kad būtų išlaikytos heap’o savybės, reikia lyginti jį su tėvu.

Jei naujas narys mažesnis – sukeičiame.

Lenktynės

Heap’asElemento įterpimas (4)

2

9 1

10 15 8 6

Kartojame lyginimą sukeistam elementui.

Einam link medžio viršūnės – panašiai kaip rikiavimas įterpimu.

Lenktynės

Heap’asElemento įterpimas (5)

1

9 2

10 15 8 6

Lenktynės

Heap’asElemento įterpimas (6)

1

9 2

10 15 8 6

Baigiame, kai:

• Prieiname medžio šaknį.

• Nebereikia sukeisti elementų.

Lenktynės

Heap’asElemento įterpimas

Lenktynės

Heap’asElemento įterpimas

2

9 6

10 15 8 1

Lenktynės

Heap’asElemento įterpimas

2

9

610 15 8

1

Lenktynės

Heap’asElemento įterpimas

1

9 2

10 15 8 6

Baigiame, kai:

• Prieiname medžio šaknį.

• Nebereikia sukeisti elementų.

Lenktynės

Heap’asMažiausio elemento išėmimas

Lenktynės

Heap’asMažiausio elemento išėmimas

1

9 2

10 15 8 6

Visada šakninė viršūnė, pagal jo savybes.

Mažiausias elementas

Mažiausia elementą įsimename, o vietoj jo įrašome paskutinį heap’o elementą.

Sumažiname heapo dydį.

Lenktynės

Heap’asMažiausio elemento išėmimas

1

9 2

10 15 8 6

Paskutinis elementas

Lenktynės

Heap’asMažiausio elemento išėmimas

6

9 2

10 15 8

Bet šakninė viršūnė dabar pažeidžia heap’o savybes.

Šakninė viršūnė (6) didesnė už 2.

Lenktynės

Heap’asMažiausio elemento išėmimas

6

9 2

10 15 8

Ją sukeisime su mažesne iš jos vaikų.

Lenktynės

Heap’asMažiausio elemento išėmimas

6

9 2

10 15 8

Jeigu sukeistam elementui vėl pažeistume heapo savybę, reiktų padaryti dar vieną sukeitimą.

Lenktynės

Heap’asMažiausio elemento išėmimas

6

9 2

10 15 8

Vėl turime heap’ą...

Lenktynės

? ?

?

?

?

Grįžti prie sprendimo

Lenktynės

Sprendimas naudojant heap’ą.

3 2 4 1 5

• Surikiuojame mašinas pagal starto laiką

• Tikriname ar gretimos mašinų poros lenkiasi.

• Jeigu lenkiasi, lenkimo įvykį dedame į heap’ą(raktas – apskaičiuotas lenkimosi laikas)

Ar trečia lenkia antrą?

Ar antra lenkia ketvirtą?

Ar ketvirta lenkia pirmą?

Ar pirma lenkia penktą?

Lenktynės

Sprendimas naudojant heap’ą.

3 2 4 1 5

• Paeiliui išiminėjame įvykius iš heap’o (K kartų), ir:

• Imituojame lenkimą: greitesnę mašina lenkia lėtesnę• Sukeičiame mašinas• Patikriname ar aplenktos mašinos nesiveja dar kita mašina

Jei taip, įvykį vėl dedame į heapą.

• Patikriname ar lenkusi mašina lenks dar kitąJei taip, įvykį vėl dedame į heapą.

Lenktynės

Tikrinimas ar mašina lenkia kitąKada A aplenks mašiną B? Tarkime tas laikas yra x, ir

A B

Starto laikas TA TB

Greitis GA GB

(x – TA) * GA = (x – TB) * GB;

x * GA – TA * GA = x * GB – TB * GB;

x * (GA - GB) = TA * GA – TB * GB;

x = (TA * GA – TB * GB) / (GA – GB)

Lenktynės

PastabosRealieji skaičiai.

Visiškai teisingame sprendime lenkimo laikas turėjo būti saugomas trupmenoje, nes lyginant realiuosius skaičius galima paklaida, ypač kai lenkimai yra labai artimi.

Lenktynės

Atvejų nagrinėjimas

• Mašinos juda vienodu greičiu.

WW Golf 1

WW Golf 1

• Mašinos niekada nelenkia viena kitos.

Lenktynės

Atvejų nagrinėjimas• Mašinos juda nevienodu greičiu.• Greitesnė mašina startuoja vėliau

WW Golf 1

Mercedes

• Mašinos niekada nelenkia viena kitos.

Lenktynės

Atvejų nagrinėjimas• Mašinos juda nevienodu greičiu.• Greitesnė mašina startuoja anksčiau

WW Golf 1

Mercedes

Greitesnė mašina lenkia lėtesnę

Lenktynės

Didžioji “Viliaus” taurė

Lenktynės

WW Golf 1

Mercedes

R

# Vilius has signed in.

9.25 [ Vilius ] Adomai, lenkimas :P

Lenktynės

WW Golf 1

Mercedes

R

# Vilius has signed in.

9.28 [ Vilius ] Adomai, tuoj kartos lenkimą!9.28 [ Adomas ] Joa, matau krč…

# Vilius has signed off

Lenktynės

# Vilius has signed off

[Vilius] 19:21 Jeigu turite klausimų, galiu atsakyti

[Vilius] 19:21 Aj tiesa...

# Vilius has signed off

# Vilius has signed in

top related