Załóżmy, że ma prostą równania w postaci:algorytm do obliczania zestawu roztworu z jednym prostym równaniem o dwóch zmiennych
7x + 4y = n
, w którym n jest wybrane przez nas i X, Y i n są wszystkie dodatnie liczby całkowite. To jest jedyne równanie, które jest nam dane. Wśród możliwych rozwiązań potrzebujemy rozwiązania (x, y), w którym x jest najmniejszy. na przykład
7x + 4y = 14, then (2, 0) is the solution
7x + 4y = 15, then (1, 2) is the solution
7x + 4y = 32, then (4, 1) and (0, 8) are the possible solutions,
of which (0, 8) is the correct solution
Chciałbym zaprojektować algorytm do obliczenia go w jak najmniejszym czasie pracy. Obecny algorytm, który mam na myśli coś takiego:
Given an input n
Calculate max(x) = n/7
for i = 0 to max(x)
If the equation 7*i + 4*y = n holds
return value of i and y
else
continue
Algorytm ten, jak sądzę, może mieć czas pracy upto O (n) w najgorszym przypadku zachowań. Czy istnieje jakiś lepszy algorytm do obliczenia rozwiązania?
Mówisz: "Jeśli równanie 7 * i + 4 * y = n zatrzymuje się" otrzymujesz z pętli, ale co to jest? – msam
Czy jest górna granica na X i Y? Jeśli tak, to binarne przeszukuj drogę do sukcesu. –
Możesz przeczytać o [programowaniu liniowym] (http://en.wikipedia.org/wiki/Linear_programming#Integral_linear_programs). Twój problem jest zdecydowanie konkretnym przypadkiem uogólnionego problemu, ale jestem ciekawy, czy istnieje skuteczne rozwiązanie dla uproszczonego problemu, z którym się borykasz. – amit