지정된 부분에서 Hasse Diagram 을 만드는 방법을 찾고 있습니다. 순서 이진 관계입니다. 관계는 명시 적으로 제공됩니다 (예 : Hasse[{{1,2},{2,3},{1,3}}]
). 출력은 해당 그래프가됩니다.
나는 해결책을 찾았습니다. , 몇 가지 해결책을 찾았지만 사용 방법을 찾지 못했습니다 .. 여기 에서 찾은 내용입니다.
조건부 부분 주문 세트와 비유 한 관계에 대해 Hasse 다이어그램을 생성하는 방법이 있다면 (물론이 경우에는 대략적인 다이어그램에만 관심이 있습니다) 이에 대해 듣고 싶습니다.
댓글
- 참조한 코드의 어떤 부분이 ' 이해하지 못했습니까?
- 글쎄요. ' 내 목적을 위해 사용하는 방법을 이해하지 못했습니다. 즉, 위의 예와 같이 관계를 명시 적으로 정의하는 방법을 의미합니다. 나만 허락하는 것 같아 조건부 관계에 대해서만 그래프를 그리려면 .. 조건과의 관계를 정의 할 수 있지만 ' 더 간단한 것이 있습니까? 그리고 한 가지 더 문제는 조금 놀았는데 라벨의 글꼴 크기를 변경하는 방법을 찾을 수 없었습니다. 그래프를 단어로 복사하고 싶습니다. 라벨은 그렇게 작지 않고 읽을 수 있어야합니다.
- 노드 간의 관계를 명시 적으로 지정하면 ' 그냥 그래프일까요?
- I ' 죄송합니다. ' Mathematica를 처음 사용합니다. 내 설명의 그래프처럼 보이는 것은 무엇이든 괜찮을 것입니다. 저는 ' 계산할 필요가 없습니다. 하지만 그릴 그래프가 많고 내 필요에 맞는 전용 기능이 있기를 바랐습니다. 다른 해결책이 있으면 언제든지 알려주세요 ..하지만 ' Mathematica를 처음 사용하므로 ' 프로그램의 많은 기본 방법에 익숙하지 않습니다.
- Mathematica Stack Exchange RB14에 오신 것을 환영합니다. 곧 답변을 게시하겠습니다. (점심 후 :-))
Answer
10+ 버전에서는 TransitiveReductionGraph a를 작성할 수 있습니다. > 및 RelationGraph 를 사용하여 Hasse 다이어그램 함수를 가져 오려면 RelationGraph
와 동일한 인수 및 옵션을 사용합니다.
ClearAll[hasseF] hasseF = TransitiveReductionGraph @* RelationGraph
예 :
hasseF[SubsetQ, Subsets[Range[4]], VertexShapeFunction -> "Name"]
substringQ[s1_, s2_] := UnsameQ[s1 , s2] && StringMatchQ[s1, ___ ~~ s2 ~~ ___] hasseF[substringQ, {"a", "b", "c","ab", "ac","abc", "abcd"}, VertexShapeFunction -> "Name"]
답변
원하는 것이 실제로 매우 간단하다고 생각합니다 (@ SjoerdC.deVries의 의견에서도 언급) :
Graph[{1 -> 2, 2 -> 3, 3 -> 1}, DirectedEdges -> False, GraphStyle -> "DiagramGold"]
반면에 모든 기능을 갖춘 Hasse 다이어그램을 탐색하려는 경우 연결 한 코드는 다음과 같습니다. 좋은 시작. 또한 데모 프로젝트에는 몇 가지 관련 예 가 있습니다. 항상 거기에서 검색하는 것이 좋습니다.
더 자세히 살펴보면 Combinatorica 패키지에 내장 된 Mathematica에는 HasseDiagram
패키지가 있습니다. 문서에서 이 예 를 살펴보십시오. / p>
<< Combinatorica` ShowGraph[HasseDiagram[MakeGraph[Subsets[4], #2 \[Intersection] #1 === #1 && #1 != #2 &]]]
더 자세한 기능을 원하시면 문의 할 수 있습니다. 이 논문의 저자 :
“부분적으로 주문 된 세트를 처리하는 Mathematica 패키지”, P. Codara
또는이 책 받기 :
댓글
- 질문자가 진정한 Hasse 다이어그램을 원한다면 확실히 자동 계산 방법을 원합니다. 이진 관계에 의해 생성 된 유 방향 그래프의 전 이적 감소 . 화살표는 방향이 있어야하며 1과 3 사이의 화살표는 '이어서는 안됩니다.
- @JOwen 그렇다면 표준 표현이 왜 그런지 아십니까? 지시되지 않습니까? alturl.com/jribp
- ' 확실하지 않지만 방향성이있는 것 같습니다. 가장자리에있는 정보.게시 한 링크에서 y가 x를 덮을 때마다 (즉, 언제든지) x에서 y까지 위쪽으로 [원본에서 기울임 꼴로 표시되는] 선분 또는 곡선을 그려야한다고 게시했습니다. x < y이고 x < z < y) "