Ich betrachte das folgende Problem:
Gegeben -dimensionalen Vektoren des natürlichen Zahlen und einiger Eingangsvektor ist eine lineare Kombination der ‚s mit natürlicher Zahl Koeffizienten?
dh gibt es einige wobei ?
Offensichtlich kann die reelle Zahlenversion dieses Problems durch Gaußsche Eliminierung gelöst werden. Ich frage mich, wurde die ganzzahlige Version dieses Problems untersucht? Welche Algorithmen gibt es, um es zu lösen?
Beachten Sie, dass hier natürliche Zahlen verwendet werden, jedoch keine modulare Arithmetik. Dies unterscheidet sich also etwas vom chinesischen Restsatz und solchen Systemen. Es scheint auch mit diophantinischen Gleichungen zu tun zu haben, aber ich frage mich, was in dem Fall getan wurde, in dem nur nicht negative ganze Zahlen berücksichtigt werden. Dies erinnert auch an ein mehrdimensionales Teilmengen-Summen-Problem, das verallgemeinert wurde, um es uns zu ermöglichen, eine beliebige Anzahl von Kopien jedes Vektors zu erstellen. Es scheint auch in Bezug auf die Prüfung , ob ein Element der ist Gitter durch erzeugt , mit der Ausnahme , dass wir hier nur erlauben lineare Kombinationen mit nicht-negativen Koeffizienten.
Für alle Interessierten ist dies motiviert, indem untersucht wird, ob sich ein Parikh-Vektor in einer linearen Menge befindet, wie im Satz von Parikh .
Insbesondere interessiert mich ein Algorithmus, der das Problem nur mit natürlichen Zahlenoperationen lösen und vermeiden kann, auf die reellen / Gleitkommazahlen einzugehen.
Antworten:
Ihr Problem ist NP-vollständig, durch Reduktion von der Teilmengen-Summe (es ist in NP, da die Tatsache, dass alles nicht negativ ist, die Koeffizienten der Lösung ausreichend gut begrenzt). Wenn eine Instanz der Teilmengen-Summe gegeben ist (gibt es eine Teilmenge von , die zu summiert ?), Konstruieren wir eine Instanz von Ihnen Problem wie folgt. Für jede setzen wir als Vektor mit zwei Einträgen ungleich Null: und und als Vektor mit einem eindeutigen Eintrag ungleich Null . Der Zielvektor istS={s1,…,sn},T S T v1,…,v2n,u 1≤i≤n vi vi,i=1 vi,n+1=si vn+i vn+i,i=1 u=1,…,1,T . Jede natürliche Kombination von gleich muss genau eine von auswählen und codiert so eine Teilmenge von deren Summe ist der Wert der letzten Komponente.v1,…,v2n 1,…,1,∗ vi,vn+i S
quelle