рассчитать временную/пространственную сложность во время работы программы

Я пробую разные типы алгоритмов сортировки и понимаю концепцию асимптотической временной и пространственной сложности.

Мне интересно, можем ли мы написать некоторую логику в самой программе, чтобы вычислить пространственно-временную сложность этого алгоритма, чтобы мы могли получить доказательство того, что алгоритм ведет себя так, как ожидалось?

У кого-нибудь есть мысли по этому поводу?


person Onki    schedule 26.06.2015    source источник
comment
Вы можете задать время своего алгоритма с различной длиной входных данных, а затем сделать вывод о том, как масштабируется время на основе входных длин (например: масштабируется ли время линейно по мере увеличения входных данных).   -  person Buddy    schedule 26.06.2015
comment
Доказать, что алгоритм ведет себя в указанном наихудшем случае, на самом деле невозможно.   -  person Louis Wasserman    schedule 26.06.2015


Ответы (1)


С инструментами вы можете только измерить время и пространство, используемые для конкретного экземпляра проблемы. Только если вы перечислите все возможные экземпляры проблемы, вы сможете доказать наихудший случай временной и пространственной сложности. На практике это довольно неопровержимо.

Вам нужно будет перечислить все возможные экземпляры, потому что вы не знаете, какие входные данные будут сложными, а какие простыми. Например, если бы вы тестировали BubbleSort с упорядоченными входными данными от 1 до n с различной длиной, вы никогда не наблюдали бы наихудший случай.

person M.P. Korstanje    schedule 26.06.2015
comment
Я не понял вас полностью. Не могли бы вы получить дополнительную информацию или ссылку, чтобы уточнить свой ответ. - person Onki; 26.06.2015
comment
Не проблема. Но не могли бы вы сказать мне, какой бит неясен. - person M.P. Korstanje; 26.06.2015