Isomorfismi della struttura dei dati


20

Disclaimer: non sono un teorico CS.

Proveniente dall'algebra astratta, sono abituato a trattare cose che sono uguali a un isomorfismo, ma ho difficoltà a tradurre questo concetto in strutture di dati. Per prima cosa ho pensato che sarebbero bastati dei morfismi teorici biiettivi, ma mi sono imbattuto in un muro abbastanza rapidamente - questi sono solo codifiche e non catturano l'essenza computazionale della struttura dei dati.

Esiste una definizione più restrittiva (ma più utile)? (O se no, perché?) Esiste una definizione canonica di categoria di "strutture di dati costruite"?

Risposte:


16

Non esiste una categoria canonica di questo tipo, per lo stesso motivo non esiste una categoria canonica di calcoli. Tuttavia, esistono strutture algebriche ampie e utili su strutture di dati.

Una delle strutture più generali, che è comunque utile, è la teoria delle specie combinatorie. Una specie è un funzione , dove B è la categoria di insiemi finiti e biiezioni tra di loro. Puoi pensare alle specie come a famiglie di strutture indicizzate da insiemi astratti di posizioni. Questo spiega la funzionalità di B - tali famiglie devono essere invarianti rispetto alla ridenominazione delle etichette astratte. Quindi, il calcolo delle specie praticamente riproduce i metodi di generazione delle funzioni a livello funzionale, per generare insiemi di strutture di dati anziché conteggi.F:BBBB

Per vedere questa teoria implementata in un linguaggio di programmazione, puoi leggere il documento del simposio Haskell di Brent Yorgey, Specie , funzioni e tipi, oh mio! . Penso che Sage abbia anche un pacchetto specie, sebbene ovviamente sia orientato verso l'algebra del computer piuttosto che sulla programmazione.


14

In effetti, esiste un concetto diverso dall'isomorfismo che è più utile nella programmazione. Si chiama "equivalenza comportamentale" (a volte chiamata "equivalenza osservazionale") ed è stabilita dando una "relazione di simulazione" tra strutture di dati piuttosto che biiezioni. Gli algebristi sono entrati e hanno creato un'area chiamata "tipi di dati algebrici" in Informatica, dove hanno spinto per un po 'isomorfismi e algebre iniziali. Alla fine, gli informatici si resero conto di essere stati ingannati. Un buon articolo che parla di questi temi è " Sull'equivalenza osservativa e le specifiche algebriche" di Sannella e Tarlecki.

Ho scritto una risposta a un'altra domanda in cstheory sulle relazioni logiche e le simulazioni che parla della storia più generale delle relazioni di simulazione nell'informatica. Ti invitiamo a leggerlo e dare seguito ai riferimenti qui forniti. Il capitolo 5 di "Craft of Programming" di Reynolds è particolarmente illuminante.

Un libro di testo sulla teoria degli algebrici degli automi di Holcombe contiene la seguente citazione interessante (p. 42):

Ci sono molti altri risultati riguardanti omomorfismi e quozienti ... Sebbene abbiano un interesse algebrico indipendente, non si sono ancora dimostrati particolarmente utili nello studio degli automi e delle aree correlate. In effetti, la teoria algebrica delle macchine differisce dalla direzione presa in altre teorie algebriche sotto un aspetto importante ... L'enfasi nella teoria degli automi non è, tuttavia, [su] quali macchine "sembrano", ma cosa "possono fare" . Considereremo due macchine strettamente correlate se entrambe possono "fare la stessa cosa", ma potrebbero non essere algebricamente isomorfe!


Riflettendo ancora una volta sulla citazione di Holcombe, noto che sta sostanzialmente dicendo che l'algebra tradizionale si occupa di come "sembrano" le cose, cioè della loro struttura, ma non hanno idea di cosa "possono fare", cioè del loro comportamento. Ciò sembra indicare una limitazione fondamentale dell'algebra tradizionale rispetto all'informatica. Purtroppo, penso che anche la teoria delle categorie appartenga allo stesso campo. Ma la teoria delle categorie ha uno status di "vacca sacra" e parlare dei suoi limiti è considerato non freddo. Si spera che gli informatici raccoglieranno abbastanza coraggio per dirlo più forte.
Uday Reddy,

Uday, potresti approfondire di più su come (l'assimetria?) Della teoria delle categorie non sembra adatta?
Łukasz Lew,

@ ŁukaszLew, Se la teoria delle categorie fosse adatta, si potrebbe dire che tutte le espressioni di tipo di calcolo lambda digitate con una variabile di tipo X sono funzioni. Ma non sono, ad esempio, F (X) = (X -> X) non è un funzione.
Uday Reddy,

7

Invece di chiederci come possiamo rafforzare / indebolire la nozione di isomorfismo, un'altra possibilità è chiederci: qual è la giusta nozione di equivalenza tra strutture computazionali e qual è la struttura matematica alla base di questa nozione.

Una grande famiglia di strutture sono le coalgebre. Strutture come liste, alberi, automi, sia della varietà finita che di quella infinita, possono essere descritte come coalgebre. Possiamo quindi studiare l'omomorfismo o l'isomorfismo tra coalgebre.

Tuttavia, anche gli omomorfismi tra coalgebre non raccontano l'intera storia. Potresti trovare utile cercare simulazioni, bisimulazioni e altre relazioni logiche. Se preferisci un approccio algebrico (piuttosto che relazionale) le connessioni di Galois sono un'opzione. Ecco alcuni punti di partenza.


2

Disclaimer: non sono sicuro di aver capito la tua domanda. Vuoi parlare di isomorfismo tra due strutture di dati o tra due "specifiche della struttura di dati"? (Questi sono talvolta chiamati tipi di dati astratti.)

Se si considera il modello di sonda cellulare, allora penso che un concetto di isomorfismo si presenti facilmente. Questo perché il modello di sonda cellulare modella il calcolo mediante un albero decisionale, quindi l'isomorfismo è facile da definire. Il modello di sonda cellulare aiuterebbe, penso, sia se si considera l'isomorfismo tra le implementazioni della struttura dei dati, sia se si considerano le specifiche della struttura dei dati.

Per informazioni sul modello di sonda cellulare, vedere ad esempio il sondaggio di Miltersen. ( Complessità della sonda cellulare: un'indagine )

Se dite di più sul perché è necessario definire l'isomorfismo tra le strutture di dati, potrebbe essere possibile fornire ulteriore aiuto. Sentiti libero di mandarmi un messaggio.

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.