Szukam sposobu na utworzenie diagramu hasse z podanego fragmentu kolejność relacji binarnych. Relacja zostanie podana jawnie, na przykład: Hasse[{{1,2},{2,3},{1,3}}], a wynikiem będzie odpowiedni wykres.

Wyszukałem w Google rozwiązanie , i znalazłem jakieś rozwiązanie, ale nie udało mi się go użyć. tutaj ” to, co znalazłem.

Jeśli istnieje sposób na wygenerowanie diagramu Hassego dla warunkowego zbioru częściowego porządku i dla relacji nieskończonej (oczywiście, w tym przypadku interesuje mnie tylko diagram przybliżony), z przyjemnością o tym usłyszę też.

Komentarze

  • Która część kodu, o której mowa, nie ' rozumiesz?
  • Cóż, nie ' nie rozumiem, jak go używać do swoich celów. co oznacza, jak wyraźnie zdefiniować relację (jak w powyższym przykładzie). wydaje się, że tylko mi pozwala narysować wykres tylko dla relacji warunkowej… no cóż, mógłbym zdefiniować relację z warunkiem, ale czy nie ' czy jest coś prostszego? i jeszcze jeden problem, trochę się tym bawiłem i nie mogłem znaleźć sposobu na zmianę rozmiaru czcionki na etykietach .. Chcę skopiować wykres do słowa, a etykiety muszą być czytelne, a nie takie małe.
  • Jeśli wyraźnie określisz relacje między węzłami, czy nie jest to ' czy to tylko wykres?
  • I ' przepraszam, ' jestem nowy w Mathematica. Wszystko, co wyglądałoby jak wykres mojego opisu, byłoby w porządku. Nie ' nie muszę wykonywać na nim obliczeń. Ale mam dużo wykresów do narysowania i mam nadzieję, że istnieje funkcja dedykowana dla moich potrzeb. jeśli masz inne rozwiązanie, daj mi znać … ale pamiętaj, że ' jestem nowy w Mathematica, więc ' Nie znam wielu podstawowych metod programu.
  • Witaj w Mathematica Stack Exchange RB14, wkrótce odpowiem (no … po obiedzie :-))

Odpowiedź

W wersjach 10+ możemy tworzyć TransitiveReductionGraph i RelationGraph , aby uzyskać funkcję diagramu Hassego, przy czym przyjmuje te same argumenty i opcje, co RelationGraph:

ClearAll[hasseF] hasseF = TransitiveReductionGraph @* RelationGraph 

Przykłady:

hasseF[SubsetQ, Subsets[Range[4]], VertexShapeFunction -> "Name"] 

tutaj wprowadź opis obrazu

substringQ[s1_, s2_] := UnsameQ[s1 , s2] && StringMatchQ[s1, ___ ~~ s2 ~~ ___] hasseF[substringQ, {"a", "b", "c","ab", "ac","abc", "abcd"}, VertexShapeFunction -> "Name"] 

tutaj wprowadź opis obrazu

Odpowiedź

Myślę, że to, czego chcesz, jest w rzeczywistości bardzo proste (również odnotowane przez @ SjoerdC.deVries w swoim komentarzu):

Graph[{1 -> 2, 2 -> 3, 3 -> 1}, DirectedEdges -> False, GraphStyle -> "DiagramGold"] 

tutaj wprowadź opis obrazu

Jeśli, z drugiej strony, chciałbyś poznać pełne funkcjonalne Diagramy Hasse, kod, do którego prowadzi łącze, to dobry start. Projekt demonstracyjny zawiera również kilka odpowiednich przykładów – to jest zawsze dobrym pomysłem, aby tam przeszukać.

Zagłębiając się głębiej, Mathematica wbudowana w pakiet Combinatorica ma pakiet HasseDiagram. Spójrz na ten przykład z Dokumentacji wymaga

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

tutaj wprowadź opis obrazu

Aby uzyskać jeszcze bardziej szczegółowe informacje, skontaktuj się z nami autorzy tego artykułu:

„Pakiet Mathematica radzący sobie z częściowo uporządkowanymi zestawami” , P. Codara

lub pobierz tę książkę:

„Obliczeniowa matematyka dyskretna: kombinatoryka i teoria grafów z matematyką” , Sriram Pemmaraju, Steven Skiena

Komentarze

  • Jeśli pytający chce prawdziwego diagramu Hassego, z pewnością chce automatycznego sposobu obliczania przechodnia redukcja skierowanego wykresu generowanego przez relację binarną. Myślę, że strzałki powinny być skierowane, a strzałka między 1 a 3 nie powinna ' nie tam być.
  • @JOwen Czy wiesz, dlaczego w takim razie standardowa reprezentacja jest nie skierowany? alturl.com/jribp
  • Nie ' nie mam pewności, ale myślę, że jest kierunek informacje na krawędziach.W zamieszczonym przez Ciebie linku jest napisane, że należy narysować " odcinek linii lub krzywą, która biegnie w górę [zapisana kursywą w oryginale] od x do y, ilekroć y obejmuje x (to znaczy zawsze, gdy x < y i nie ma takiego z, że x < z < y) "

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *