Я использую алгоритм поиска, который с самого начала загружается одним семенем. С этого момента я ожидаю, что алгоритм будет вести себя детерминированным образом, что в основном так и есть. Я могу в значительной степени проверить это, посмотрев на 10 000-й шаг, 20 000-й шаг и увидев, что они идентичны. Что я вижу по-другому, так это время, затрачиваемое процессором потока на то, чтобы добраться до одного и того же места (пройдя идентичные пути). Я измеряю время потока с помощью ProcessThread.TotalProcessorTime.
Чтобы определить это количественно, я провел для вас несколько тестов. Я варьировал время выполнения и измерял количество решений, оцененных за это время
30s 60s 120s 120s
473,962 948,800 1,890,668 1,961,532
477,287 954,335 1,888,955 1,936,974
473,441 953,049 1,895,727 1,960,875
475,606 953,576 1,905,271 1,941,511
473,283 951,390 1,946,729 1,949,231
474,846 954,307 1,840,893 1,939,160
475,052 952,949 1,848,938 1,934,243
476,797 957,179 1,945,426 1,951,542
475,034 476,599 473,831 486,721
1,478 2,426 23,922 11,108
. Я повторил тест по 8 раз для каждого. В двух нижних строках показаны средние решения, оцененные за 30-секундный период, за которыми следует стандартное отклонение. Я повторил тест 120 с, поскольку стандартное отклонение было очень высоким в первый раз и намного ниже во второй.
Если мой алгоритм выполняет ту же работу, то что может привести к тому, что одна и та же работа займет разное количество времени? Какой случайный элемент вводится?
Чтобы прояснить несколько моментов:
С уважением