Dies ist eine Neufassung einer anderen meiner jüngsten Fragen [1], die nicht gut formuliert wurde (sie hatte eine halb offensichtliche Vereinfachung, mea culpa), aber ich denke, es gibt immer noch eine nicht triviale Frage im Kern. habe ähnliche Probleme in der Literatur gesehen, aber nicht dieses im Besonderen.
Ich werde es in Bitvektoren schreiben, weil das für mich am einfachsten ist.
es gebe einen Satz von Bitvektoren der Größe , v 1 , v 2 , v 3 , . . . , v n . Betrachten Sie die bitweise XOR-Operation. gegeben ein Zielvektor v 0 . Finden Sie eine Teilmenge von Vektoren, so dass das bitweise XOR der Menge gleich dem Zielvektor ist. Was ist ein effizienter (oder idealerweise optimaler) Algorithmus, um eine Teilmenge zu finden?
Der Brute-Force-Algorithmus zählt die Potenzmenge der Größe und listet die erste gefundene Teilmenge auf. (etwas?) effizienter würde 1-Positionen im Ziel betrachten und Teilmengen ausschließen, die nicht mindestens 1 Vektor mit einer 1 in einer 1-Position des Ziels haben.
Die Teilmenge kann existieren oder nicht. es kann eindeutig sein oder nicht.
eng verwandte Fragen: (1) Finden der kleinsten Teilmenge, (2) Ausgabe von T / F in Abhängigkeit davon, ob eine solche Teilmenge existiert.
Ich habe den Verdacht, dass eines dieser Probleme NP vollständig ist.
Auf der Suche nach Referenzen, Einsichten usw. wäre es interessant zu wissen, ob es "harte" oder "einfache" Eingaben usw. gibt
Wie ich auf der anderen Frage schrieb, scheint dies eng mit dem Teilmengen-Summenproblem (siehe z. B. garey & johnson ref) verbunden zu sein, von dem bekannt ist, dass es NP-vollständig ist, aber dies scheint "etwas" weniger komplex zu sein, da es einfacher ist, einen Vektor bitweise XOR zu berechnen als eine binäre Summe (die Summe kann mehr binäre Ziffern haben).
Das Problem scheint auch eng mit der jüngsten Frage von bin fu verbunden zu sein [2].