A che cosa servono gruppi, monoidi e anelli nei calcoli del database?


38

Perché un'azienda come Twitter dovrebbe essere interessata a concetti algebrici come gruppi, monoidi e anelli? Guarda il loro repository su github: twitter / algebird .

Tutto quello che ho potuto trovare è:

Implementazioni di Monoidi per algoritmi di approssimazione interessanti, come filtro Bloom , HyperLogLog e CountMinSketch . Questi ti consentono di pensare a queste sofisticate operazioni come potresti fare con i numeri e di aggiungerle in hadoop o online per produrre statistiche e analisi potenti.

e in un'altra parte della pagina GitHub:

È stato originariamente sviluppato come parte dell'API Matrix di Scalding, in cui le matrici avevano valori che sono elementi di monoidi , gruppi o anelli . Successivamente, fu chiaro che il codice aveva un'applicazione più ampia all'interno di Scalding e su altri progetti all'interno di Twitter.

Cosa potrebbe essere questa applicazione più ampia? su Twitter e per interesse generale?


Sembra che le aggregazioni di composizione dei database abbiano una struttura simile a un monoide.

Stessa domanda su Quora: qual è l'interesse di Twitter per l'algebra astratta (con algebird)?


Ho una preparazione in matematica ma non sono un informatico. Sarebbe bello avere usi "reali" di monoidi e semi-gruppi. Questi sono normalmente considerati costrutti teorici inutili e ignorati in molti corsi di algebra astratta (per mancanza di qualcosa di interessante da dire).


1
Ho trovato questo bell'articolo hon HackerNews news.ycombinator.com/item?id=5196708 "l'Algebra dei tipi di dati algebrici"
john mangual,

d'accordo, trovo sorprendente che Twitter stia armeggiando in queste aree, è piuttosto astratto. l'idea principale sembra essere componenti riutilizzabili per un sistema simile a Mapreduce. algebird sembra essersi "allontanato" dalle scottature. ecco un discorso sulle scottature . tuttavia non menziona gli oggetti algebrici. forse possono essere usati come primitivi / tipi di oggetti dati per la manipolazione nei flussi di dati, che sono anche mappati nello stile di programmazione funzionale ....
vzn

Un breve scambio con l'autore delle scottature sulla sua algebirdbiblioteca, su Twitter: twitter.com/posco/status/300692719561482240
john mangual,

2
Discuterei fortemente la tesi secondo cui i monoidi e i semi-gruppi sono entrambi considerati "costrutti teorici inutili", poiché entrambi hanno anche un po 'di utilità all'interno della matematica stessa, sia nella teoria delle categorie sia per modellare varie altre strutture algebriche. Da quale branca della matematica vieni che considera i semigruppi "inutili"?
Steven Stadnicki,

Forse il monoide sintattico di un linguaggio formale è rilevante, sebbene non sia menzionato nelle risposte. Sebbene mi aspetto, come molte risposte, che sia rilevante per il calcolo in generale piuttosto che per i calcoli del database.
PJTraill

Risposte:


27

La risposta principale è che sfruttando la struttura dei semi-gruppi, possiamo costruire sistemi che si parallelizzano correttamente senza conoscere l'operazione sottostante (l'utente promette associatività).

Usando i Monoidi, possiamo sfruttare la scarsità (abbiamo a che fare con molte matrici sparse, in cui quasi tutti i valori sono zero in alcuni Monoidi).

Usando gli Anelli, possiamo fare moltiplicazioni matriciali su cose diverse dai numeri (cosa che a volte abbiamo fatto).

Lo stesso progetto algebird (così come la storia del problema) spiega chiaramente cosa sta succedendo qui: stiamo costruendo molti algoritmi per l'aggregazione di grandi set di dati e sfruttare la struttura delle operazioni ci dà una vittoria sul lato dei sistemi (che di solito è il punto dolente quando si cerca di produrre algoritmi su migliaia di nodi).

Risolvi i problemi di sistema una volta per qualsiasi Semigruppo / Monoide / Gruppo / Anello, quindi puoi collegare qualsiasi algoritmo senza dover pensare a Memcache, Hadoop, Storm, ecc ...


4
qualcuno può espandere il collegamento tra matrici sparse e zeri in alcuni Monoid?
VZN

alcuni link ad esempi o ulteriori letture sarebbero davvero belli
Erik Allik

11

I monoidi sono onnipresenti nella programmazione, solo che la maggior parte dei programmatori non li conosce.

  • Operazioni numeriche come addizione e moltiplicazione.
  • Moltiplicazione di matrici.
  • Fondamentalmente tutte le strutture di dati simili a raccolte formano monoidi, dove l'operazione monoidale è concatenazione o unione. Ciò include elenchi, set, mappe di chiavi per valori, vari tipi di alberi ecc.
  • Per un tipo di dato funzioni A A insieme alla funzione identità su un modulo A 's endomorfismo monoide.UNUNUNUNUN

Alcune altre operazioni non formano monoidi ma semi-gruppi. Un buon esempio è la ricerca dell'elemento minimo di una sequenza di elementi: rappresenta il minimo di a e b rispetto a un determinato ordine.un'Bun'B

Poiché i monoidi sono così generali, consentono di scrivere funzioni molto generiche. Ad esempio, il ripiegamento su una struttura di dati può essere espresso come mappando ogni suo elemento su un monoide e quindi usando l'operazione monoidale per combinarli in un unico risultato.

Un altro esempio carino e molto generale è la generalizzazione dell'espiazione mediante quadratura a monoidi (o semi-gruppi). Possiamo scrivere una singola funzione che calcola solo nelle operazioni O ( log n ) . Applicandolo a diversi monoidi otteniamo:un'...un'n-volteO(logn)

  • esponenziazione rapida dei numeri;
  • esponenziazione rapida delle matrici (può essere utilizzata per calcolare i numeri di Fibonacci in moltiplicazioni );O(logn)
  • O(1)O(log(min(n1,n2)))
  • eccetera.

Per ulteriori esempi, vedere Esempi di monoidi / semigruppi in programmazione .


7

Un problema importante nei file system distribuiti ( DFS ) è generare file da blocchi distribuiti. L'area del codice di cancellazione della teoria dell'informazione e dell'algebra (gruppi, anelli, algebra lineare, ...) è ampiamente utilizzata nei file system distribuiti a tolleranza d'errore, ad esempio nel RAID HDFS (Hadoop Based File System). Le società di social network e cloud sono ampiamente basate su DFS, quindi hanno bisogno di persone che siano padrone di Algebra e del codice di cancellazione per progettare sistemi migliori e ad alte prestazioni (come i codici Reed-Solomon , ecc.).

Questo è anche un buon poster per la loro applicazione (algebra) nel cloud storage: nuovi codici per il cloud storage


6

Se la tua domanda è

Quali sono esempi di gruppi, monoidi e anelli nel calcolo?

+min+

Sebbene ciò possa sembrare solo teorico dal punto di vista algebrico, ci consente di utilizzare librerie di algebra lineare fortemente ottimizzate per problemi con i grafici. BLAS combinatoria è una di queste librerie.


1
Sì, e abbiamo aggiunto minplus per fare proprio questo: github.com/twitter/algebird/blob/develop/algebird-core/src/main/…
Oscar Boykin

4

(Σ*,)

In cambio, le considerazioni sui linguaggi formali hanno prodotto il parser Earley che può essere esteso per analizzare i semirings . Ciò è utile nell'elaborazione del linguaggio naturale e in altre aree usando modelli stocastici per le lingue (formali).


3

Ho una preparazione in matematica ma non sono un informatico. Sarebbe bello avere usi "reali" di monoidi e semi-gruppi. Questi sono normalmente considerati costrutti teorici inutili e ignorati in molti corsi di algebra astratta (per mancanza di qualcosa di interessante da dire).

C'è piuttosto troppo interessante da dire. Tuttavia, è più un argomento di matematica discreta e combinatoria che di algebra e analisi astratte, almeno per gli argomenti meno banali. C'è anche la domanda su quanto devi sapere su un determinato argomento prima di poter dire a qualcun altro che sarebbe un argomento matematico interessante relativo a monoidi e semigruppi. Ad esempio, trovo interessanti i seguenti argomenti (relativi ai semigruppi):

  • semigruppi finiti e teoria di Krohn-Rodi
  • simmetrie parziali, semigruppi inversi, groupoidi e quasicristalli
  • semirings e geometria tropicale
  • ordini parziali e funzioni di Möbius
  • funzioni sottomodulari e decomposizioni (simili a Dulmage-Mendelsohn)

So molto di ciascuno di questi argomenti? Probabilmente no. Ci sono anche molti altri argomenti matematici relativi a monoidi e semigruppi, alcuni sono più interni alla stessa teoria dei semigruppi (come le relazioni di Green), altri sono più generali e non specifici ai semigruppi (semigruppi universali, omomorfismo e teoremi di isomorfismo, strutture quozienti e congruenze), ma anche importante da un punto di vista matematico. Gli argomenti che ho citato sopra hanno per lo più applicazioni "del mondo reale", ma ci sono altri argomenti correlati che hanno anche applicazioni del "mondo reale".


Quanto sopra non è una risposta alla vera domanda, ma affronta solo il "... sono normalmente considerati costrutti teorici inutili ... per mancanza di qualcosa di interessante da dire ...". Quindi ho elencato alcuni punti "interessanti", ho affermato che quelli per lo più hanno applicazioni "del mondo reale", e ora Hi-Angel richiede un po 'di informazioni su tali applicazioni. Ma poiché "c'è qualcosa di troppo interessante da dire", non aspettatevi troppo da queste informazioni: il teorema di Krohn-Rodi è un teorema di decomposizione per i semigruppi finiti. Le sue applicazioni implicano l'interpretazione del prodotto ghirlanda come una sorta di composizione (di trasduttori) in connessione con la teoria degli automi e dei linguaggi regolari,Mark V Lawson: due lezioni tutorial e materiale di base contenevano (404 ora) buon materiale sui semigruppi inversi . La base per le loro applicazioni è la loro connessione al semigruppo inverso simmetrico , ovvero l'insieme di tutte le biiezioni parziali su un insieme. Si può anche iniziare con le caratterizzazioni algebriche di base dei semigruppi inversi, ma questo approccio rischia di trascurare le connessioni a ordini parziali che sono importanti per molte applicazioni. Un giorno dovrò blog su un'applicazione specifica di semigruppi inversi come "gerarchia" utilizzata per comprimere i layout dei semiconduttori. Le applicazioni delle semirimazioni sono già state descritte nelle altre risposte (e la geometria tropicale ci porterebbe lontano dall'informatica). Poiché anche i monoidi e i semigruppi sono collegati a ordini parziali, anche argomenti interessanti come Möbius funzionano come descritto in Combinatorics: The Rota Way . E poi anche argomenti tratti da matrici e matroidi per l'analisi del sistema come la decomposizione di Dulmage-Mendelsohn vengono messi in relazione, che erano una delle mie motivazioni per studiare la teoria dei reticoli (e le strutture gerarchiche nascoste).


Non che mi stia lamentando, ma penso che se aggiungessi un po 'di informazioni su un'applicazione dei punti elencati nella vita reale, avresti ottenuto molti più voti.
Hi-Angel,

1
@ Ciao-Angelo Quanto sopra non è una risposta alla vera domanda, ma affronta solo il "... inutile costrutto teorico ... mancanza di qualcosa di interessante da dire ..." commento. Mi suggerisce che potrei non essere la persona più qualificata per affrontare questo: "So molto di ciascuno di questi argomenti? Probabilmente no." Il mio post più votato rientra nella stessa categoria. Benjamin Steinberg la definisce un'area "tossica" e sarebbe qualificato per "rispondere" ...
Thomas Klimpel,
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.