proprietà di chiusura del tipo di dati "tupla" in python

3

Da questo link , di seguito è riportata la diapositiva che vorrebbe capire:

The Closure Property of Data Types

  • A method for combining data values satisfies the closure property if:
  • The result of combination can itself be combined using the same method.
  • Closure is the key to power in any means of combination because it permits us to create hierarchical structures.
  • Hierarchical structures are made up of parts, which themselves are made up of parts, and so on.

Tuples can contain tuples as elements

In matematica, lo sappiamo,

La proprietà di chiusura del numero reale aggiunge che quando aggiungiamo il numero reale ad un altro numero reale il risultato è anche reale. Ad esempio, 3 + 6 = 9.

Penso che la diapositiva di cui sopra parli anche di tuple su queste stesse righe.

La mia domanda:

Come da sopra della diapositiva,

  1. Come aggiunta in caso di numeri reali, qual è l'operazione su cui tuple mantiene la proprietà di chiusura?

  2. Puoi spiegare in che modo la proprietà di chiusura (solo) di tuple consente le strutture gerarchiche? Poiché, secondo questo codice , è "proprietà di chiusura + proprietà ricorsiva" di un modello di dati consentito un modello di dati gerarchico.

posta overexchange 11.03.2015 - 06:49
fonte

3 risposte

4

Definizione matematica: la chiusura è definita per una particolare operazione su un particolare insieme. Diciamo che abbiamo un set S e abbiamo 2 elementi da S , li chiamiamo a e b , e abbiamo un'operazione, chiamiamola @ che combina 2 elementi di S . Quindi @ viene chiusa su S se a@b è sempre in S , indipendentemente dal particolare elemento selezionato.

Quindi devi specificare sia un'operazione che un set se vuoi essere perfettamente chiaro su cosa si intende per "chiusura". (A volte le persone omettono uno o entrambi se pensano che il contesto chiarisca abbastanza il loro significato.)

Nella programmazione, i tipi spesso mostrano dove in matematica ti aspetteresti un set. Puoi pensare a un tipo come l'insieme di tutti i possibili valori di quel tipo, e un valore essendo di un tipo particolare come quel valore che appartiene al set corrispondente.

Con questo sfondo: l'operazione in questo caso è tupling (creando una tupla) e il set / tipo su cui abbiamo chiusura è l'insieme di tuple. Ad esempio, (a,b) e (c,d) sono tuple, e combinandole fa un'altra tupla: ((a,b), (c,d)) .

La cosa importante da ottenere da questa diapositiva non è la parola "chiusura" o anche la sua definizione matematica, ma le strutture di dati nestable sono potenti.

    
risposta data 12.03.2015 - 22:41
fonte
2

A rischio di ripetere il solido precedente, risposta cancellata ...

Like addition in case of real numbers, what is the operation on which tuple hold closure property?

Questa è una domanda strana. Esistono infinitamente molte operazioni che funzionano su tuple (o qualsiasi tipo per quella materia), che restituirà un tipo a cui è possibile applicare nuovamente l'operazione. È come chiedere quale frase finisce nella lettera L .

Can you explain how the closure property(only) of tuple permits hierarchical structures? Because as per this code, it is "closure property + recursive property" of a data model permits a data model to be hierarchical.

Stai prendendo le cose alla lettera.

La ricorsione non è necessaria per la chiusura. La chiusura non fornisce necessariamente strutture gerarchiche. Considera questa semplice funzione:

 T Identity(){ return this; }

Si spera che sia chiaro che questo fornisce la proprietà necessaria per poter prendere il risultato della funzione ed eseguire di nuovo la funzione su di esso. Ma non è ricorsivo e non è gerarchico. Non è una "combinazione", ma è banale aggiungere un parametro che viene poi scartato.

Quello che la diapositiva sta cercando di trasmettere è che la proprietà di chiusura è un modello molto utile. Avere un oggetto che è lo stesso tipo delle sue parti è ben noto nel mondo OO come il pattern composito . Nei linguaggi funzionali, sono più spesso conosciuti come tipi di dati algebrici (anche se sono così comuni lì, che spesso non sono viene assegnato un nome speciale).

Ed è potente perché fornisce un modo conciso per definire strutture simili a frattali come liste e alberi che sono il fondamento delle strutture di dati; e per estensione, una base di calcolo.

    
risposta data 12.03.2015 - 19:53
fonte
2

Non c'è solo "chiusura adeguata", c'è un "chiusura sotto l'operazione X ". Per esempio, gli interi sono chiusi sia in addizione che in moltiplicazione.

Le tuple sono chiuse in molte operazioni, una di esse essendo 'composizione di elementi', cioè, puoi usare una tupla come elemento di un'altra tupla. Questa particolare proprietà ovviamente, per costruzione, consente di costruire strutture ricorsive. Confrontalo con i nodi di un albero.

Esistono altre operazioni in cui vengono chiuse anche le tuple, ad es. "unione" di tuple (espresse da + ) che non consentono strutture ricorsive arbitrarie, ma consentono una lunghezza teoricamente arbitraria, ecc.

    
risposta data 12.03.2015 - 21:07
fonte

Leggi altre domande sui tag