Понятие детерминированности
Каждый раз, когда вы запускаете узел в PolyAnalyst, система выполняет процесс определенного типа, например, импорт данных, фильтрация колонок или записей, или статистический анализ. Эти процессы могут быть детерминированными и недетерминированными.
Процесс называется детерминированным, если для завершения задачи этот процесс в среднем выполняет те же шаги и тратит то же количество времени при обработке одних и тех же входных данных.
И наоборот, процесс называется недетерминированным, если для выполнения задачи требуется разное количество шагов или времени, и при одинаковых входных данных одинаковый результат не гарантирован.
Но и в этом случае мы можем назвать процесс детерминированным, если проигнорируем все внешние факторы. Обычно, когда речь идет об описании процессов, такие внешние факторы игнорируются; детерминированность процесса определяется только теми факторами, которые не являются внешними, а, наоборот, являются внутренними сущностными характеристиками процесса.
Знание того, является ли процесс детерминированным в PolyAnalyst, помогает оценить его производительность и масштабируемость. Как правило, поведение детерминированного процесса описать проще. Можно сказать, что для его завершения требуется определенное количество шагов и определенное количество времени. Конечно, при этом внешние факторы (например, изменение приоритетности одновременно выполняемых процессов) должны быть сведены к минимуму, или, по крайней мере, они должны быть постоянными. При условии постоянного наличия внешних факторов (например, имеются другие пользователи, которые работают на этом же сервере PolyAnalyst; компьютер выполняет сканирование на вирусы по неизвестному графику; происходит резкий перепад напряжения или отключение питания и т.д.), трудно сказать, какие процессы в PolyAnalyst являются действительно детерминированными. Однако, с академической точки зрения, можно сказать, что эти внешние факторы не играют существенной роли, либо их присутствие сведено до минимума, либо такие факторы являются константами. Следовательно, мы можем сделать некоторые общие заключения относительно производительности различных узлов.
Большинство узлов в PolyAnalyst являются детерминированными. Такие узлы производят идентичные результаты при каждом запуске узла. Например, графический узел всегда будет создавать один и тот же график, если использовать одни и те же данные на входе; на выполнение узла будет уходить одинаковое количество времени и расходоваться одинаковый объем памяти.
С другой стороны, узел Выборка не будет производить одни и те же данные при каждом запуске. На самом деле, результат узла может быть одинаковым, но вероятность такого исхода очень низкая. Пользователи никогда не будут достоверно знать, что они воспроизведут предыдущий результат. В конце концов, смысл случайной выборки заключается в создании случайной выборки. Строки в выходных данных должны быть случайными при каждом запуске узла. Должна быть высокая вероятность того, что каждое выполнение узла позволит получить новый результат. Фактически, алгоритм создания случайной выборки, который производит идентичные результаты при каждом срабатывании, является бесполезным. Таким образом, этот узел считается недетерминированным.
Многие узлы анализа данных в PolyAnalyst не являются детерминированными. Некоторые моделирующие узлы используют алгоритмы, которые при запуске делают случайный выбор. При каждом запуске таких узлов они принимают решения в рандомном порядке. Следовательно, при каждом запуске эти узлы могут генерировать разные модели. Сложно определить, сколько времени потребуется на выполнение этих узлов.