У меня есть задача, в которой я должен распространять уникальные ресурсы среди потребителей. Правила являются:Логическое программирование: как распределить ресурсы среди потребителей?
- каждый потребитель имеет набор типов ресурсов они могут использовать,
- каждый ресурс уникален,
- каждый потребитель должен получить п> 0 ресурсы,
- должны быть распределены все ресурсы.
E. g. мы имеем этот список потребителей и их предпочтений:
- А: {X, W}
- В: {X, Y, V}
- С: {Х, Z}
- D: {Z}
У нас есть список ресурсов: [X, W, Y, V, Z].
Если мы назначим ресурсы наивно, итерируя по списку потребителей и предоставив им первый доступный ресурс из своего набора, мы потерпим неудачу в D, потому что только Z уже назначен C. Лучшим решением является следующее: A (W), B (Y, V), C (X), D (Z).
Похож на логическое программирование для меня! Хотя тривиально писать программу Prolog, которая предоставляет решения для этого конкретного случая, я хочу, чтобы это была общая программа, которая может решить любые подобные проблемы или сказать, что решение для данных не существует.
Где я должен смотреть, для чего мне нужно google, имеет ли эта проблема имя?
Спасибо! Он делает то, что я хочу. –