• No results found

Tentamen Geometrische Algoritmen, 25 oktober 2001, 9–12 uur

N/A
N/A
Protected

Academic year: 2021

Share "Tentamen Geometrische Algoritmen, 25 oktober 2001, 9–12 uur"

Copied!
2
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Tentamen Geometrische Algoritmen, 25 oktober 2001, 9–12 uur

Voor dit tentamen zijn 10 punten te halen. Lees elke opgave zorgvuldig door voordat je ’m beantwoordt; zorg dat je begrijpt wat er gevraagd wordt. Controleer achteraf of je inderdaad de vraag hebt antwoord. Maak eerst de opgaven die je makkelijk vindt, en daarna pas de moeilijkere. Het tentamen is gesloten boek.

1. (1 punt)

Geef een algoritme dat voor een meegegeven facef in een planaire subdivisie de co¨ordi- naten van de hoogste vertex in de rand van f bepaalt (als er meerdere hoogste vertices zijn mag er willekeurig een van deze vertices gerapporteerd worden). De subdivisie is opgeslagen als doubly-connected edge list. Gebruik de standaardnamen van de velden van de doubly-connected edge list in je algoritme. Je algoritme moet correct zijn voor elke face van de subdivisie. Het algoritme heeft dus HoogsteVertex(face-object f) als heading.

2. Gegeven een verzameling D van n driehoeken in het platte vlak, en neem aan dat de driehoeken niet snijden of binnen een andere driehoek liggen. We beschouwen een sweep line algoritme dat inO(n log n) tijd een verzameling met n−1 lijnstukken bepaalt zodanig dat:

• elk lijnstuk tussen twee hoekpunten van twee driehoeken loopt;

• de lijnstukken niet snijden, behalve mogelijk bij een gezamenlijk eindpunt;

• de lijnstukken gezamenlijk alle driehoeken met elkaar verbinden.

(a.) (1 punt)

Beschrijf de statusstructuur die je gebruikt in het algoritme, met alle opgeslagen infor- matie.

(b.) (1 punt)

Geef aan wanneer de events optreden, en beschrijf precies hoe de eventafhandeling plaatsvindt.

(c.) (0.5 punt)

Bewijs de tijdgrens van het algoritme.

3. (1 punt)

Bij lineair programmeren met een verzameling half-vlakken H beschouwen we het ran- domized incremental construction algoritme. Neem aan dat de doelfunctie vertikaal omlaag is (kleinst mogelijke y-co¨ordinaat), en bij gelijke y-co¨ordinaten de kleinste x- co¨ordinaat. Neem aan dat twee half-vlakken h1 en h2 de oplossing begrenzen, en h3, . . . , hn in random volgorde staan.

Als we backwards analysis gebruiken om de verwachte tijd voor de toevoeging van hi

te bepalen, gaan we uit van de situatie na het toevoegen van dat half-vlak hi, begrensd door een lijn `i. We hebben dan een optimum punt pi. Omdat de toevoegvolgorde random was, heeft elk half-vlak uit {h3, . . . , hi} dezelfde kans om als laatste te zijn toegevoegd.

Ga zorgvuldig na hoe groot de kans is dat de laatste toevoeging het optimum oppiheeft gezet. Behandel daarbij zowel het algemene geval als de gedegenereerde gevallen.

1

Dit tentamen is in elektronische vorm beschikbaar gemaakt door de TBC van A–Eskwadraat.

A–Eskwadraat kan niet aansprakelijk worden gesteld voor de gevolgen van eventuele fouten in dit tentamen.

1

(2)

4. Gegeven is een verzameling P met n punten en een verzameling L met m lijnen (met willekeurige ori¨entaties). We willen graag weten of er (minstens) een punt uitP op een lijn uit L ligt. Een triviale oplossing voor het probleem is voor elk punt p ∈ P en elke lijn l ∈ L te controleren of p ∈ l. Zo ja, dan zijn we klaar; zo nee, dan testen we het volgende paar. Deze oplossing kost natuurlijkO(nm) tijd.

(a.) (1 punt)

Stel je voor we kiezen de volgende aanpak: (i) Bouw een kd-boom om de punten uitP op te slaan. (ii) Zoek met elke lijn uit L om te bepalen of er een punt uit P op die lijn ligt.

Het zoekalgoritme voor een willekeurige lijn in een kd-boom is geheel analoog aan de het algoritme voor zoeken met een as-parallelle rechthoek: bij elke knoop die we tegenkomen en waarvoor de zoeklijn ` het bijbehorende gebied snijdt, gaan we in beide kinderen recursief verder zoeken. Snijdt de lijn het bijbehorende gebied niet, dan stopt het algoritme in die knoop. Bij elk blad waarin we uitkomen testen we of het opgeslagen punt op de zoeklijn ` ligt.

Hoeveel tijd kost dit algoritme in het slechtste geval? (N.B. Zorg dat je antwoord ook correct is als n heel klein is ten opzichte van m, of andersom.)

(b.) (1 punt)

Stel je voor we kiezen als oplossing de volgende aanpak: Bouw een arrangement van de lijnen uit L. Hiermee krijgen we een planaire subdivisie bestaande uit vertices, edges, en faces. Bouw een point location structuur op alle edges van dit arrangement. Ga vervolgens met elk punt uit P zoeken in de point location structuur. Als dat punt op een edge en dus op een lijn uitL ligt, dan ontdekken we dat tijdens zo’n point location zoekactie.

Wat is de verwachte tijd in het slechtste geval voor deze aanpak? (N.B. Zorg dat je antwoord ook correct is als n heel klein is ten opzichte van m, of andersom.)

(c.) (1 punt)

Stel we weten dat m = Θ(n2), dus we hebben aanzienlijk meer lijnen dan punten.

Geef nu een zo effici¨ent mogelijke oplossing. Schets de oplossing en geef de tijdgrens, uitgedrukt in n.

5. LaatR een verzameling van n as-parallelle rechthoeken in het platte vlak zijn. We willen R opslaan voor het volgende type zoekacties: Gegeven een query punt q, rapporteer alle rechthoeken van R die q bevatten. We willen een datastructuur die effici¨ent in geheugenruimte en zoektijd is.

(a.) (1 punt)

Beschrijf een effici¨ente datastructuur die R opslaat voor het genoemde type zoekactie.

Neem als hoofdboom een segmentboom, en gebruik het begrip “kanonieke deelverza- meling” in je beschrijving.

(b.) (0.5 punt)

Geef van de datastructuur uit (a.) aan hoeveel geheugen deze kost.

(c.) (1 punt)

Geef het zoekalgoritme en de tijd nodig voor de genoemde zoekactie.

2

2

Referenties

GERELATEERDE DOCUMENTEN

(4 punten) Met de gegeven informatie is een massabalans voor het bedrijf NedMag op te stellenC. Onder verwaarlozing van opslag in het bedrijf, en alle stromen uitgedrukt in tonnen

Warmte kan niet voor 100% geconverteerd worden in kracht.. Kracht kan niet voor 100% geconverteerd worden in

Door ’long-lived greenhouse gases’ wordt de warmtestraling uitgezonden door het aardoppervlak als het ware voor een deel tegengehouden - de aarde houdt netto energie vast..

De complete lijst met inputs en outputs en de overeenkomstige hoeveelheden voor de Chromium Recovery stap staan vermeld in figuur 3.. (a) De sludge wordt niet verkocht,

Als reken- hulp kun je een eenvoudige calculator gebruiken (dus geen GR of smartphone)!. Als je een onderdeel mist mag je wel het resultaat ervan in de volgende

(1 punt; -0.5 punt per fout of niet ingevuld antwoord) Gegeven een simpel polygoon P met n vertices en een simpel polygoon Q met m vertices.. Wat is de maximale complexiteit van

(2 punten) In hoofdstuk 6 werd een point location datastructuur gebouwd voor een subdivisie S bestaande uit lijnstukken.. In deze opgave willen we weten of de oplossing ook werkt

(c) Definieer een Haskell-type PredAlgebra, die het tupel beschrijft dat aan de functie foldPred meegegeven kan worden om een betekenis van een predicaat te bepalen.. (Omdat