Ermitteln der minimalen Abdeckung eines Intervalls mit Subintervallen

8

Angenommen, ich habe ein Intervall (a, b) und eine Anzahl von Subintervallen {(a i , b i )} i wessen Vereinigung ist alles von (a, b). Gibt es eine effiziente Möglichkeit, eine Teilmenge mit minimaler Kardinalität dieser Teilintervalle zu wählen, die immer noch (a, b) umfasst?

    
Alex Coventry 15.11.2008, 22:41
quelle

4 Antworten

12

Ein gieriger Algorithmus, der bei a oder b beginnt, liefert immer die optimale Lösung.

Beweis: Betrachte die Menge S a aller Subintervalle, die a abdecken. Natürlich muss einer von ihnen zur optimalen Lösung gehören. Wenn wir es durch ein Subintervall (a max , b max ) von S ersetzen, dessen rechter Endpunkt b ist ist maximal in S a (am weitesten rechts), das verbleibende unbedeckte Intervall (b max, b) wird eine Teilmenge des verbleibenden Intervalls von der optimalen Lösung sein, so kann es mit keinem Subintervallen mehr abgedeckt werden als das analoge unbedeckte Intervall von der optimalen Lösung. Daher wird auch eine Lösung konstruiert aus (a max, b max) und der optimalen Lösung für das verbleibende Intervall (b max, b) optimal sein.

Beginnen Sie also bei a und wählen Sie iterativ das Intervall, das am weitesten rechts liegt (und das Ende des vorherigen Intervalls abdeckt), wiederholen Sie, bis Sie auf b drücken. Ich glaube, dass das Auswählen des nächsten Intervalls in Protokoll (n) erfolgen kann, wenn Sie die Intervalle in einem erweiterten Intervallbaum speichern.

    
Rafał Dowgird 16.11.2008, 21:27
quelle
1

Klingt nach dynamischer Programmierung.

Hier ist eine Illustration des Algorithmus (angenommen Intervalle sind in einer Liste nach der Endzeit sortiert):

%Vor%

Aber es sollte auch Caching (Memo) beinhalten.

    
Artelius 15.11.2008 22:53
quelle
0

Es gibt zwei Fälle zu beachten: Fall 1: Es gibt keine überlappenden Intervalle nach der Zielzeit eines Intervalls. Wählen Sie in diesem Fall das nächste Intervall mit der kürzesten Startzeit und der längsten Endzeit. (Amin, Bmax). Fall 2: Es gibt 1 oder mehr Überlappungsintervalle mit dem letzten Intervall, das Sie betrachten. In diesem Fall spielt die Startzeit keine Rolle, da Sie dies bereits abgedeckt haben. So optimieren Sie die Endzeit. (a, bmax).

Fall 1 wählt immer auch das erste Intervall als das erste Intervall in der optimalen Menge aus (der Beweis ist der gleiche wie der von @RafalDowgrid bereitgestellte).

    
user183037 05.04.2012 18:00
quelle
-2

Sie meinen, dass sich die Subintervalle immer noch so überlappen, dass (a, b) an allen Punkten vollständig bedeckt bleibt?

Vielleicht teilen Sie die Subintervalle selbst in Basisblöcke auf, die mit ihrer Herkunft in Zusammenhang stehen, so dass Sie Optionen für jedes Basisblockintervall auflisten können, die auch für andere Regionen gelten, die vom Subintervall abgedeckt werden. Dann können Sie eine Suche basierend auf jedem Sub-Subintervall verwenden und zumindest sicher sein, dass keine Lücken übrig sind.
Dann müsste man ... effizient suchen .. das wäre härter.

Kann jede Sammlung von Intervallen eliminieren, die vollständig von einem anderen Satz kleinerer Nummern abgedeckt sind, und das Problem nach der Vorverarbeitung beheben.
Wäre nicht das Minimum für das Ganze minimal für mindestens die Hälfte? Ich bin mir nicht sicher.

Gefunden ein Treffermenge und allgemein NP_hard.
Konnte dieses nicht lesen, sieht aber wie ein umgekehrtes Problem aus.
Konnte es nicht lesen, aber ein weiterer Link , der die Aufteilungsintervalle angibt.
Hier ist eine verfügbare Referenz auf Randomized Algorithmen für GeometricOptimization Probleme.
Seite 35 dieser pdf hat einen Greedy-Algorithmus.
Seite 11 von Karp (1972) erwähnt das Schlag-Set und wird viel zitiert.
Google result . Recherchieren hat Spaß gemacht, aber ich muss jetzt gehen.

    
waynecolvin 16.11.2008 00:09
quelle