Ответ 1
Правильное решение для программирования в контуре:
- Обратите внимание, что центры входят в проективные пары - так идентифицируйте и удерживайте только половину центров, которые находятся в одной или других полусферических крышках множества центров. Пары дополняют друг друга. Примерное правило: все подмножества, содержащие вершину 1, и те, что на "экваторе", те, которые содержат вершину 2, и на этом множестве "экватор", те, которые содержат вершину 3, и т.д., Рекурсивно сохраняя граничную половину, примыкающую к наименьшему индексированному вершина.
- Заметим, что для каждого подсимплекса либо подсимплекс смежна с вершиной 1, либо имеет расстояние 1 от симплекса. (Причина: каждая новая вершина в тетраэдре привязана к каждой предыдущей вершине тетраэдра - следовательно, каждый подсимплекс либо падающий на вершину 1, либо вершина 1 связана с каждой вершиной симплекса.) Следовательно, существует только две популяции каждого вид подсимплекса (относительно заданной вершины). (Мы можем заменить это наблюдение решением только сохранить меньший член каждой проективной пары, но тогда правило для маркировки вершин сложнее.)
-
Тетраэдры полностью симметричны при перестановке вершинных меток. Следовательно, любой "интересный раздел" эквивалентен другому разделу, содержащему только ведущий сегмент вершин, т.е. Может быть идентифицирован среди вершин Range [1, n] для некоторого n.
-
Соблюдая приведенное выше, мы обнаруживаем, что из интересного раздела есть сюръекция к набору графов. Для каждого графика мы должны перечислять согласованные членства в вершинах (описано ниже). За исключением одной вершины, вершины графа попадают в пары
- Пара содержит все центры заданной мощности (все подсимплики заданной размерности).
- Один член пары содержит центры, инцидентные вершине 1.
- Другой член пары содержит центры, не инцидентные вершине 1.
- Специальная вершина - это либо центр, содержащий все вершины, либо его проективную пару ( "пустой центр" ).
- Если граф содержит любой член пары, он должен (по крайней мере) содержать элемент, содержащий центры, падающие на 1 (или вершины могут быть перемаркированы, чтобы сделать это).
- Края графа взвешены. Вес - это количество вершин, разделяемых этими двумя центрами. Существуют ограничения на вес, основанные на мощности центров на каждом конце и на основе того, являются ли две вершины как первыми членами, так и вторыми членами или являются одним из каждого. (Например, "один из каждого" не может совместно использовать вершину 1.)
- Граф - полный подграф на множестве вершин, содержащий специальную вершину. Например, для тетраэдра граф представляет собой K_ {3} на множестве вершин, указанных выше, причем одна вершина является специальной и с весами ребер.
- Раздел представляет собой график с последовательным применением меток к центрам в конце каждого ребра (т.е. последовательно помеченным для учета количества общих вершин, обозначенных весом кромки, и что каждое подмножество в одном наборе вершин графа содержит вершина 1). Поэтому данный график может представлять несколько разделов (с помощью разных меток). (Что не так много вариантов, как кажется, если они будут иметь смысл в секунду.)
- Раздел не интересен, если матрица, составленная из координат ее центров, имеет нулевой определитель.
В случае трех измерений с четырьмя вершинами мы получаем следующие множества (мы используем короткую проективную пару, потому что в этом примере достаточно видимости, чтобы не требовать более простого правила отклонения метки вершин):
0: проективная пара {1,2,3,4}
1: {1}
1 ': {2}, {3}, {4}
2: {1,2}, {1,3}, {1,4}
2 ': проективные пары до 2 (так опущены)
3: проективные пары к 1 '(так опущены)
3 ': проективные пары до 1 (так опущены)
Ограничения меток:
{0- > х, х}
{0- > х", х}
{1- > 1,1} - запрещено: центры не включены дважды
{1- > 1', 0}
{1- > 2,1}
{2- > 2,1}
Никакие другие веса не возможны с этими вершинами графа.
Граф является инцидентом K_ {3} на 0, следующие графики сохраняют правила выбора графа:
A: {0- > 1,1}, {0- > 1 ', 1}, {1- > 1', 0}
B: {0- > 2,2}, {0- > 2,2}, {2- > 2,1}
A имеет только одну маркировку: {1}, {2}, {} и ваш трехугольный интересный набор. Эта маркировка не имеет детерминанта нуля. B имеет только одну маркировку: {1,2}, {1,3}, {} и ваш квадратный интересный набор. Эта маркировка не имеет нулевого определителя.
Преобразование в код остается как упражнение для читателя (потому что я должен уйти на работу).