nicht sicher, dass es einen Namen hat; formeller gesagt, wäre es:
|a-b| = 100
|c-b| = 20
|c-d| = 90
|a-d| = 170
wo |x|
steht für die absolute value von x
Was das verallgemeinerte System geht, wenn man N Gleichungen dieser Art mit k Unbekannten haben, haben Sie N Wahlmöglichkeiten des Zeichens. Ohne Verlust der Allgemeinheit (weil jede Lösung eine zweite Lösung mit umgekehrter Ordnung ergibt) können Sie ein Vorzeichen für die erste Gleichung und einen bestimmten Wert für eine der Unbekannten wählen (da das Ganze in der Position nach links und rechts verschoben werden kann). Dann haben Sie 2 N-1 Möglichkeiten für die restlichen Gleichungen, und alles, was Sie tun müssen, ist durch sie gehen, um zu sehen, welche, wenn überhaupt, Lösungen haben. Da die Koeffizienten alle +/- 1 sind und jede Gleichung hat zwei Unbekannten, gehen Sie einfach durch sie eins nach dem anderen:
Step 1: Without loss of generality,
choose a sign for one equation
and pick a value for one unknown:
a-b = 100, a = 0
Step 2: Choose signs for the remaining absolute values.
a = 0
a-b = 100
c-b = 20
c-d = 90
a-d = 170
Step 3: go through them one by one to solve/verify there aren't conflicts
(time = N steps).
0-b = 100 => b = -100
c-b = 20 => c = -80
c-d = 90 => d = -170
a-d = 170 => OK => (0,-100,-80,-170) is a solution
Step 4: if this doesn't work, go back through the possible choices of sign
and try again, starting at step 2.
Full set of solutions is (0,-100,-80,-170)
and its negation (0,100,80,170) and any number x<sub>0</sub> added to all terms.
So eine obere Schranke für die Laufzeit O (N * 2 N-1 ist) ≡ O (N * 2 N).
Ich nehme an, es könnte eine Abkürzung geben, aber keine offensichtliche kommt in den Sinn.
Es ist ein "gewichteten Graphen". –
@Workshop Alex: Um genauer zu sein: Es ist eine gewichtete, ungerichtete Grafik. – Gumbo
Die Eingabe ist eine gewichtete Grafik, und die Ausgabe stellt auch eine gewichtete Grafik dar, aber ich denke, das Problem ist, was nennst du die * Transformation * von der einen zur anderen. – JustJeff