Итак, Венди рекламирует свой сэндвич как имеющий 256 комбинаций - это означает, что есть 8 ингредиентов, которые вы можете либо не иметь (хотя мне интересно, почему они будут считать комбинацию, в которой вы включаете ничего действительного, но я отвлекаюсь).
Обобщенный подход позволяет вам умножать различные состояния каждого выбора вместе, что позволяет более сложные комбинации. В этом случае предметы Wendy могут быть включены или исключены. Но у некоторых бутербродов может быть выбор двух видов горчицы (но не для того, чтобы сэкономить затраты).
Это довольно просто. Вы умножаете количество опций вместе, поэтому для Wendy это:
2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 = 256
Если они диверсифицировали свой выбор горчицы, как указано выше, это будет:
2 * 2 * 3 * 2 * 2 * 2 * 2 * 2 = 384
Идет дальше, кажется, сложнее.
Если вы делаете семена кунжута отдельным предметом, тогда им нужен элемент булочки. Вы можете иметь семена кунжута, только если вы включите булочку, и вы можете иметь булочку без семян кунжута, но вы не можете иметь семена кунжута без булочки. Это может быть упрощено до одного предмета с тремя состояниями (нет, булочка с семенами, булочка без), но бывают ситуации, когда это невозможно сделать.
Конфигуратор Dell Dell, например, запрещает определенные комбинации (возможно, все слоты заполнены, элементы несовместимы при вставке в ту же систему и т.д.).
- Каковы соответствующие комбинаторные подходы при работе со значительно более сложными системами, в которых элементы могут конфликтовать?
- Что такое хорошие, обобщенные подходы к хранению такой информации без необходимости кодирования для каждого продукта/комбинации/элемента для обнаружения конфликтов?
- Есть ли простой способ сказать: "Есть X способов настроить вашу систему/сэндвич", когда системе приходится иметь дело со сложными конфликтующими комбинациями?