Zauważ, że nie mam "problemu" i nie szukam "innego sposobu na znalezienie dużego O mojego algorytmu".Czy program bigO algorytmu można znaleźć programowo poprzez analizę jego perfs?
Chciałbym wiedzieć, czy byłoby możliwe napisanie programu, do którego można by przekazywać punkty danych, które byłyby miarą perfekcji algorytmu dla różnych wielkości wejściowych: (n,time taken to solve problem for n)
, a to by określało złożoność twojego algorytmu.
Na przykład oto co wejście może być (może to być znacznie większe, to naprawdę tylko przykładem, że nie o to chodzi w rachubę):
36 000 took 16 ms
109 000 took 21 ms
327 000 took 68 ms
984 000 took 224 ms
2 952 000 took 760 ms
8 857 000 took 2305 ms
26 571 000 took 7379 ms
79 716 000 took 23336 ms
Używanie tego rodzaju danych, jest to możliwe napisać program, który powie, jeśli mamy, powiedzmy, O(n)
, log(n)
, n log(n)
lub n!
algo?
Twoje skalowanie musi uwzględniać ograniczenia w twoim systemie, które powodują radykalne zmiany po ich przejściu.Przykłady: Możliwość dopasowania do pamięci podręcznej cpu, a nie możliwość zmieszczenia się w pamięci fizycznej lub zamiany na dysk, możliwość dystrybucji do większej liczby rdzeni, a nie. Będziesz musiał znać te ograniczenia, aby zobaczyć ich wpływ na twoje dane. –