2013-03-12 9 views
6

mogę narysować listę słów takich jak:Czy możemy myśleć o niezmiennych listach jako podwójnych do drzew?

this -> is -> a -> test 

a następnie poprzez dzielenie, mogę narysować dwie listy jako:

this -> is -> a -> test 
        ^
        | 
that -> was -> a -> hard 

Teraz, jeśli odwrócić strzałek, mam drzewo, z testem jako root. Jest to to samo pojęcie, co dualność w teorii grafów/kategorii. Dlatego mogę myśleć o drzewach i listach jako podwójnych pojęciach.

Czy to jest poprawne/użyteczne?

+1

Nie sądzę, ponieważ ten rodzaj udostępniania nie jest automatyczny. –

+0

@DanielLyons co oznacza, że ​​dualem będzie las? – didierc

+0

@didierc Myślę, że to oznacza, że ​​pytanie naprawdę nie ma zastosowania. –

Odpowiedz

18

Dzielenie się i lenistwo umożliwiają posiadanie dowolnych cyklicznych struktur. Na przykład, w Haskell definicja

ones = 1 : ones 

wytwarza wykres składający się z jednego wierzchołka (odpowiadającą 1), uchwyt (na wykresie, teoretycznie, nie programowania znaczeniu). Odwracając strzałki, otrzymasz tę samą strukturę i nie jest to drzewo (ponieważ ma pętle).

To nie jest prawda w leniwym języku.

+4

Rzeczywiście. Z jakiegoś powodu nazywa się to "redukcją wykresu". –

Powiązane problemy