Esiste una struttura di dati per i semilattici simile a una struttura di dati ad albero?


13

Se consideriamo un albero come un insieme ordinato parziale, diventa un caso speciale di un join-semilattice. Per una join-semilattice, vogliamo essere in grado di calcolare il limite (unico) minimo di due elementi (più o meno) in modo efficiente. Nel caso di un albero, una struttura di dati che consentirebbe questo sarebbe di memorizzare per ciascun elemento nel nodo corrispondente un puntatore al genitore e una misura della distanza alla radice. (In realtà, un'etichettatura basata sull'ordinamento topologico di solito usata per "una misura della distanza dalla radice", effettivamente tutto ciò che serve è un ordine parziale compatibile che può essere valutato in modo efficiente).

Ciascuna semilattice di join finita può essere rappresentata come un insieme di sottoinsiemi di un insieme finito con contenimento come ordine in modo tale che il limite superiore minimo sia dato dall'unione degli insiemi. Quindi, rappresentare ogni elemento con un numero finito di tag e calcolare il limite inferiore minimo dall'unione dei tag corrispondenti sarebbe una possibile struttura di dati. (Osservando il complemento, si vede che sarebbe anche possibile definire il limite minimo come intersezione dei tag corrispondenti.) Una struttura di dati molto più comune è semplicemente usare una matrice per memorizzare tutti i risultati di "a <= b "o anche tutti i risultati di" join (a, b) ".

Tuttavia, l'utilizzo di una tale struttura di dati per rappresentare un albero sarebbe strano. Esistono più strutture dati ad albero per semilattici di join, che consentono comunque (più o meno) un calcolo efficiente del (unico) limite minimo di due elementi? (Forse una sorta di grafico aciclico diretto con informazioni aggiuntive nei nodi simile alla misura della distanza rispetto alla radice dell'albero?)


2
Il teorema 2.2 di math.hawaii.edu/~jb/math618/os2uh.pdf mostra che una semilattice può essere rappresentata come un insieme di sottoinsiemi (in modo relativamente banale) come ipotizzato sopra.
Thomas Klimpel,

Risposte:


9

Questo post sul blog sulla teoria della grata ha un'utile sezione di riferimento, che contiene tra l'altro "Teoria del reticolo con applicazioni" di Vijay K. Garg. Il capitolo 2 "Rappresentare i poset" descrive alcune strutture di dati per rappresentare i poset e discute come calcolare il join (x, y) usando tale struttura di dati.

Le prime due strutture di dati discusse sono la rappresentazione dell'elenco di adiacenza del grafico di riduzione transitivo (= diagramma di Hasse / relazione di copertura) e grafico di chiusura transitivo (= relazione di poset). Un'osservazione sui vantaggi dell'utilizzo di un ordinamento topologico per etichettare i nodi precede quella discussione. Si noti che le etichette di tipo topologico sarebbero abbastanza buone come "una misura della distanza dalla radice", che era una parte della struttura dei dati per un albero nella domanda.

Le altre rappresentazioni discusse sono "Rappresentazione scheletrica", "Rappresentazione a matrice" e "Rappresentazione basata sulla dimensione". La "Rappresentazione scheletrica" ​​è interessante e utile, ma basata su una (= qualsiasi) scomposizione a catena del poset. La "Rappresentazione a matrice" può sembrare banale, ma è probabilmente la migliore rappresentazione per la maggior parte dei problemi pratici. La "Rappresentazione basata sulla dimensione" rappresenta il poset come sottoinsieme del prodotto cartesiano di ordini lineari, ma calcolare la rappresentazione minima di questo tipo è NP-difficile.

In conclusione, la rappresentazione più simile di questi è la rappresentazione dell'elenco di adiacenza della riduzione transitiva insieme a un'etichettatura dei nodi secondo un tipo topologico (anziché "una misura della distanza dalla radice"). Questa è in realtà una delle rappresentazioni utilizzate da Sage (l'altra è la "Rappresentazione a matrice").

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.