비교 차 세트 파티션
Sep 23 2020
4 개의 요소가 $a<b<c<d$ 그런가 $a,c$ 같은 블록에 있고 $b,d$ 그러면 같은 블록에 있습니다. $a,b,c,d$ 모두 같은 블록에 있습니다.
비교 차 세트 파티션 목록을 가져올 수 있습니까?
"Combinatorica"를 사용하면 SetPartitions [4] 명령으로 모든 세트 파티션 (예 : {1,2,3,4})을 가져올 수 있습니다.
내가 원하는 것은 비교 차가 아닌 {{1,3}, {2,4}} 요소가없는이 목록입니다.
답변
5 kglr Sep 23 2020 at 01:36
Needs["Combinatorica`"]
ClearAll[nonCrossingSetPartitions]
nonCrossingSetPartitions =
DeleteCases[{___, {___, a_, ___, c_, ___}, ___, {___, b_, ___, d_, ___}, ___} /;
a < b < c < d] @* SetPartitions;
nonCrossingSetPartitions @ 4 // Column
nonCrossingSetPartitions @ 5 // Length
42
6 PerAlexandersson Sep 23 2020 at 02:45
나는이 카탈루냐어 객체를 생성하기위한 티카 패키지 내가 당신이 원하는 생성하는 일부 재귀 알고리즘을 가지고 있으므로, GitHub의에 있습니다. 또한, 이것들에 대한 멋진 그래픽 표현과 회전과 같은 이들에 대한 일부 작업이 있습니다.
패키지를 다운로드하고
Needs["CatalanObjects`"]
Last /@ NonCrossingPartitions[4]
얻기 위해
{{{1, 2, 3, 4}}, {{3}, {1, 2, 4}}, {{2}, {1, 3, 4}}, {{1, 4}, {2,
3}}, {{2}, {3}, {1, 4}}, {{1}, {2, 3, 4}}, {{1}, {3}, {2, 4}}, {{1,
2}, {3, 4}}, {{1}, {2}, {3, 4}}, {{4}, {1, 2, 3}}, {{2}, {4}, {1,
3}}, {{1}, {4}, {2, 3}}, {{3}, {4}, {1, 2}}, {{1}, {2}, {3}, {4}}}
패키지의 모든 것을 원하지 않는 경우 메서드를 쉽게 추출 할 수 있습니다.