Angenommen, ich habe einen Satz "S" und ein monotonisches Prädikat "P" auf S. Ich möchte ein oder alle maximalen Elemente von S finden, die P erfüllen.
EDIT : Ich bin daran interessiert, die Anzahl der Bewertungen von P zu minimieren .
Welche Algorithmen gibt es für dieses Problem und welche Eigenschaften und zusätzlichen Operationen benötigen sie für S?
Was ist mit wichtigen Sonderfällen wie:
- S ist eine lineare Reihenfolge - dann funktioniert die reguläre binäre Suche, solange Sie eine "mittlere finden" -Operation haben
- S ist ein Gitter
- S ist ein Teilmengengitter
- S ist ein Multiset-Gitter
- ...
Die beiden letzteren Fälle scheinen besonders wichtig zu sein, z. B. für die Versuchsplanung. Sie haben eine Reihe von booleschen oder reellen Parametern und möchten die kleinstmögliche Kombination finden, die ein bestimmtes Muster reproduziert (z. B. einen nicht bestandenen Test).
Antworten:
Ich habe das nicht sehr durchdacht, bitte korrigieren Sie mich, wenn ich falsch liege.
quelle
Verallgemeinerung der binären Suche: Suche in Bäumen und waldähnlichen Teilordnungen
quelle
quelle
Außerdem gibt es möglicherweise viele Maximalelemente, die P erfüllen, so dass selbst die Ausgabe aller Elemente viel Zeit in Anspruch nimmt. Ich denke, es gibt nur die Hoffnung, ein Maximum zu finden.
Im Allgemeinen funktioniert die binäre Suche, wenn Sie Elemente rekursiv so auswählen können, dass nach dem Verlassen entweder die obigen Elemente oder die obigen Elemente gelöscht werden und in jedem dieser Sätze ein festes Verhältnis der Elemente gelöscht wird.
Z.B. Wenn S ein festes dimensionales Gitter ist, gibt es einen schnellen Algorithmus: Halbieren Sie immer eine Koordinate, während Sie die anderen minimal halten. Fragen Sie also z. B. im ersten Schritt (n / 2,0, ..., 0).
quelle
quelle