In cerca di esempi in cui la conoscenza della matematica discreta è utile [chiusa]

StackOverflow https://stackoverflow.com/questions/1730529

  •  20-09-2019
  •  | 
  •  

Domanda

Ispirato dopo aver visto SCNA discorso di Michael Feather " auto-educazione e l'Artigiano ", mi sono interessato a sentir parlare di esempi pratici nello sviluppo di software in cui matematica discreta sono rivelati utili.

È stato utile?

Soluzione

matematica discreta ha toccato ogni aspetto dello sviluppo del software, lo sviluppo di software si basa sulla scienza informatica al suo interno.

http://en.wikipedia.org/wiki/Discrete_math

Leggi quel link. Vedrete che ci sono numerose applicazioni pratiche, anche se questa voce di Wikipedia parla principalmente in termini teorici.

Altri suggerimenti

Tecniche che ho imparato nel mio corso di matematica discreta all'università mi ha aiutato un po 'con i giochi del Professor Layton.

che conta come utile ... giusto?

Ci sono un sacco di esempi di vita reale in cui gli algoritmi mappa coloranti sono utili, oltre solo per le mappe di colorazione. La domanda sul mio esame finale aveva a che fare con la programmazione semaforo a un incrocio a sei vie.

Come San Jacinto indica, i fondamenti della programmazione sono molto legati in matematica discreta. Inoltre, 'matematica discreta' è un termine molto ampio. Queste cose forse rendono più difficile isolare alcune esempi. Posso venire con un pugno, ma ci sono molti, molti altri.

implementazione del compilatore è una buona fonte di esempi: ovviamente c'è automi / teoria dei linguaggi formali in là; allocazione dei registri può essere espresso in termini di colorazione dei grafi; il flusso di dati classica analisi utilizzati per ottimizzare compilatori può essere espressa in termini di funzioni di strutture algebriche reticolare.

Un semplice esempio l'uso di grafi orientati è in un sistema di compilazione che prende la dipendenza dovuta singoli compiti effettuando una sorta topologico. Ho il sospetto che se si è tentato di risolvere questo problema senza avere il concetto di un grafo orientato, allora si sarebbe probabilmente finisce cercando di rintracciare le dipendenze tutto il percorso attraverso la costruzione con il laborioso contabilità codice (e poi trovare che il trattamento dei dipendenze cicliche era meno elegante).

Chiaramente maggior parte dei programmatori non scrivono i propri compilatori ottimizzanti o costruire sistemi, quindi dovrò prendere un esempio dalla mia esperienza personale. C'è una società che fornisce dati stradali per i sistemi di navigazione satellitare. Volevano controlli automatici di integrità dei loro dati, una delle quali era che la rete dovrebbe essere tutti allacciato, cioè esso dovrebbe essere possibile raggiungere ovunque da qualsiasi punto di partenza. Controllo dei dati cercando di individuare rotte tra tutte le coppie di posizioni sarebbe impraticabile. Tuttavia, è possibile derivare un grafo orientato dai dati della rete stradale (in modo da esso codifica roba come girare restrizioni, ecc) in modo che il problema si riduce a trovare le componenti fortemente connesse del grafico - uno standard di graph- concezione teorico che viene risolto da un algoritmo efficiente.

Ho preso un corso di test del software, e 3 delle lezioni sono state dedicate alla revisione matematica discreta, in relazione alla prova. Pensando di piani di test in questi termini sembra aiutare davvero fare il test più efficace.

La comprensione della teoria degli insiemi, in particolare, è particolarmente importante per lo sviluppo di database.

Sono sicuro che ci sono numerose altre applicazioni, ma quelli sono due che mi vengono in mente qui.

Just esempio di uno dei molti molti ...

In sistemi di compilazione è popolare per usare ordinamento topologico di posti di lavoro da fare.

Con sistema di compilazione intendo qualsiasi sistema dove dobbiamo gestire i lavori in relazione di dipendenza.

Può essere la compilazione del programma, generando documento, la costruzione dell'edificio, l'organizzazione di conferenze -. Per cui v'è l'applicazione in strumenti di gestione delle applicazioni, strumenti di collaborazione, ecc

Credo che si prova PROCÉDÉS correttamente da tollens modus, un concetto di logica proposizionale (e quindi la matematica discreta), modus tollens essere:

P => Q. ! Q, quindi! P.

Se si collega "Se la funzione funziona correttamente, il test passerà" per P => Q, e poi prendere! Q come dato ( "il test non ha superato"), quindi, se tutte queste affermazioni sono di fatto corretta, si dispone di una, solida base valida per il ritorno la funzione per una correzione. Al contrario, molti, forse la maggior parte dei tester funzionano dal principio:

"Se il programma funziona correttamente, il test passerà. Il test è stato superato, quindi, il programma funziona correttamente."

Questo può essere scritto come: P => Q. Q, quindi P.

Ma questa è la fallacia di "affermare il conseguente" e non mostrare ciò che il tester crede si vede. Cioè, essi credono erroneamente che la funzionalità è stata "convalidato" e può essere spedito. Quando Q è dato, P può infatti essere sia vero o falso può essere per P => Q, e questo può essere visualizzata con una tabella di verità.

Modus Tollens è fondamentale per la concezione di Karl Popper della scienza come falsificazione, e il test dovrebbe procedere più o meno allo stesso modo. Stiamo tentando di falsificare l'affermazione che la caratteristica funziona sempre in ogni circostanza espliciti ed impliciti, piuttosto che tentare di verificare che funzioni in senso stretto che può funzionare in qualche modo proscritti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top