特定の半順序集合からハッセ図を作成する方法を探しています順序二項関係。関係は明示的に指定されます(例:Hasse[{{1,2},{2,3},{1,3}}])。出力は対応するグラフになります。

解決策を探しました。 、そして私はいくつかの解決策を見つけましたが、それを使用する方法がわかりませんでした。ここに私が見つけたものがあります。

条件付き半順序集合と非有限関係(もちろん、この場合は近似図にのみ興味があります)のハッセ図を生成する方法がある場合は、それについて聞いていただければ幸いです。

コメント

  • 参照したコードのどの部分が'理解できませんでしたか?
  • そうですね、'目的に使用する方法がわかりませんでした。つまり、関係を明示的に定義するにはどうすればよいですか(上記の例のように)。それは私だけを許可するようです条件付きの関係についてのみグラフを描くには..条件付きの関係を定義することはできますが、'もっと簡単なものはありませんか?もう1つ問題があります。少し遊んだのですが、ラベルのフォントサイズを変更する方法が見つかりませんでした。グラフをWordにコピーしたいのですが、ラベルは小さくなくても読みやすいものでなければなりません。
  • ノード間の関係を明示的に指定した場合、'それは単なるグラフではありませんか?
  • I '申し訳ありませんが、私はMathematicaを初めて使用します'。私の説明のグラフのように見えるものなら何でも構いません。 '計算する必要はありません。でも、描くグラフはたくさんあるので、自分のニーズに合った専用の機能があるといいなと思いました。別の解決策がある場合は、遠慮なくお知らせください。ただし、' Mathematicaは初めてなので、'プログラムの基本的な方法の多くに精通していない。
  • Mathematica Stack Exchange RB14へようこそ。まもなく回答を投稿します(まあ…昼食後:-))

回答

バージョン10以降では、 TransitionalReductionGraph および RelationshipGraph を使用してハッセ図関数を取得するには、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"] 

ここに画像の説明を入力

一方、フル機能のハッセ図を調べたい場合は、リンクしたコードは次のとおりです。良いスタートです。また、デモンストレーションプロジェクトには いくつかの関連する例 があります-それそこで検索することをお勧めします。

さらに深く掘り下げると、 Combinatorica パッケージに組み込まれているMathematicaにはHasseDiagramパッケージがあります。ドキュメントの この例 をご覧ください

<< Combinatorica` ShowGraph[HasseDiagram[MakeGraph[Subsets[4], #2 \[Intersection] #1 === #1 && #1 != #2 &]]] 

ここに画像の説明を入力

さらに詳細な機能については、お問い合わせください。この論文の著者:

「半順序集合に対処するためのMathematicaパッケージ」、P。コダラ

またはこの本を入手してください:

“Computational Discrete Mathematics:Combinatorics and Graph Theory withMathematica” 、Sriram Pemmaraju、Steven Skiena

コメント

  • 質問者が真のハッセ図を必要としている場合は、自動的に計算する方法が必要です。二項関係によって生成された有向グラフの推移簡約。矢印は方向付けられるべきであり、1と3の間の矢印はそこにあるべきではないと思います。'そこにあるべきではありません。
  • @JOwen標準表現がなぜあるのか知っていますか指示されていませんか? alturl.com/jribp
  • '確かではありませんが、方向性があると思いますエッジの情報。あなたが投稿したリンクには、yがxをカバーするときはいつでも(つまり、いつでも)xからyに上向きに(元のイタリック体で)伸びる線分または曲線を描く必要があると書かれています。 x < yであり、x < z < y)"

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です