Есть идея для научной работы. Берите кто хочет
Писать буду простым языком, в упрощённых терминах на конкретном примере. Желающие могут исследовать эту тему и вывести более точные алгоритмы. Речь идет о компьютерном моделировании очень больших миров.
Постановка задачи
Существует город, состоящий из большого количества зданий. По этому городу можно ходить. Подойдя к одному из зданий, можно увидеть его внешние атрибуты, которые меняются во времени. Например, если это витрина магазина, то мы увидим перечь товаров на прилавке. Этот город может моделироваться в реальном времени на двуядерном процессоре, целиком занимая одно ядро. Товары на прилавках и прочие внешние атрибуты вычисляются по простым законам, т.е. генерятся. Требуется получить возможность не только гулять по городу, но и зайти в любое здание и лицезреть сложное поведение его внутренних механизмов, будь то хлебопекарня, завод, офис или жилой дом. Допустим, алгоритмы, детально описывающие эти сложные процессы, у нас есть, но вычислительные затраты на 1 дом равны затратам процессорного времени на моделирование городских улиц. Требуется иметь возможность заходить куда угодно и на всё зырить. При этом все процессы должны выглядеть для наблюдателя естественными и логичными.
Нетрудно догадаться, что при прямом real-time моделировании внутренних процессов всех подсистем задача не имеет решения.
Существующие методы
Неизвестны. Реализаций таких не видел. Если кто-то знает какие-либо научные работы на эту тему, прокомментируйте плз.
Предлагаемый метод
В основе предлагаемого метода лежит эффект
Кота Шрёдингера. Суть в том, что когда мы стоим перед закрытой дверью, мы не знаем что там внутри реально происходит и происходит ли вообще. Чудесное предположение заключается в том, что нет никакой уверенности, что Вселенная сама знает что за этой дверью, поскольку ни одного наблюдателя за ней нет. Вероятно, что даже наш "реальный" мир поступает с нами не совсем честно. С другой стороны, т.к. обстановка за дверью неизвестна никому и не может быть вычислена точно, то всё вполне честно. Этот принцип можно использовать для компьютерного моделирования: не важно что там - не вычисляй.
При прогулке по городским улицам внешние атрибуты зданий вычисляются упрощенно. Например, на полках магазинов время от времени генерятся товары с разной вероятностью. Такие вычисления занимают одно ядро процессора по условию задачи. Как только мы зашли в здание, включается второе ядро, которое начинает моделировать и показывать нам все внутренние процессы. Первое ядро при этом продолжает делать упрощенные вычисления для всех других зданий и улиц в целом. Когда мы насмотрелись на то как пекарь носит булки на прилавок, мы выходим из здания и закрываем дверь. Что теперь за ней происходит? Этого никто не знает: ни мы, ни программа моделирования, потому что она больше не моделирует процессы внутри этого здания. Программа переключила здание на упрощенные вычисления.
Как же синхронизировать упрощенные вычисления и детальные "внутренние" процессы для одной такой подсистемы? Предлагается мыслить в обратном направлении. Сначала описать мат. модель и алгоритмы упрощенных вычислений для каждой подсистемы и считать их выходные данные эталонными. Затем описывать и реализовывать детальное моделирование внутренних процессов таким образом, чтобы выходные данные (кол-во хлеба на прилавке) точно соответствовали результату упрощенного моделирования. Внутренние процессы подсистемы также должны зависеть от внешних атрибутов. В этом направлении есть куда копать! Таким образом, в обоих случаях подсистема выдаёт один и тот же результат, поэтому ведёт себя с точки зрения наблюдателя совершенно честно.
Следует отметить, что если описание процессов реального мира с такими критериями может вызвать сложности, поскольку поведение подсистем уже дано. С другой стороны, если мир не настоящий, а игровой, то описывать детальную логику работы ориентируясь на результаты упрощённого моделирования, становится гораздо проще, поскольку реалистичность не важна.
С помощью приведённого подхода можно организовать моделирования очень больших двухуровневых миров. Уровнями этого логического дерева в данном примере являются город и здание. С использованием большего количества ядер процессора можно организовать моделирование и многоуровневых систем и адаптировать под них предлагаемый метод.
Автор будет благодарен за конструктивную критику и за использование этих идей в любой сфере.