Я разрабатываю игру по строительству города и попал в проблему.
Представьте себе Цезарь III игровой механики Сьерры: у вас есть много городских кварталов с одним рынком в каждом.На расстоянии есть несколько зернохранилищ, связанных с ориентированным взвешенным графом.Разница в том, что люди (в данном случае автомобили) - это единицы, образующие пробки (весовые коэффициенты на графике).
Примечание: в серии игр Ceasar люди собирали пищу и складировали ее в нескольких больших зернохранилищах, тогда как на многих рынкахнебольшие магазины) брали еду из зернохранилищ и доставляли ее гражданам.
Задача : сообщить каждому району, откуда они должны получать пищу, при этом затрачивая наименьшее количество времени и сводя к минимуму заторы надороги города.
Пример карты
Предположим, что желтым округам нужно 7, 7 и 4 яблока соответственно.В голубоватых амбарах соответственно 7 и 11 яблок.
Предположим, что вес ребер пропорционален их длине.Тогда решение должно быть чем-то вроде серых чисел, обозначенных по краям.Например, первый район получает 4 яблока из 1-го и 3 яблока из 2-го амбара, в то время как последний район получает 4 яблока только из 2-го амбара.
Здесь вертикальные дороги сначала заняты по максимуму, а затем оставшиеся рабочие отправляются по диагональным путям.
Вопрос
Какой практичный и очень быстрый алгоритм я должениспользовать?Я просматривал некоторые статьи ( Игры с заторами: Оптимизация на соревнованиях и т. Д.), Описывающие игры с заторами, но не смог получить общую картину.