Friday, 15 September 2017

Dfa Divisibili Sottoprodotti $ 5 Binary Options


Questa macchina a stati finiti (FSM) accetta numeri binari che sono divisibili per tre. In teoria gli stati dovrebbero pari al valore di n mod 3, ma come fa questo lavoro per i numeri binari Quello che non si ottiene è come le transizioni si riuniscono perché un nuovo ingresso 0 o 1 non significa che un numero fisso è appena aggiunto al complesso n. Potete per favore aiutarmi a capire che, grazie in anticipo Uniti A, B, e C corrispondono agli ingressi congruente a 0,1, e 2 mod 3, rispettivamente. Supponiamo che l'ingresso finora rappresenta un multiplo di 3, in modo che youre nello stato A. A 0 moltiplica il numero corrente 2, quindi la sua ancora un multiplo di 3, e sei ancora in stato A. A 1 moltiplica per 2 e aggiunge 1, il che rende congruente a 1 mod 3 e la messa in stato B. Se il numero attuale è congruente a 1 mod 3, sei in stato di B. Un ingresso di 0 raddoppia il numero, il che rende congruente a 2 mod 3 e tenendo di affermare C. un ingresso di 1, invece, raddoppia il numero, rendendo congruente a 2 mod 3, e aggiunge 1, rendendolo un multiplo di 3 e invio allo stato A. Allo stesso modo in grado di analizzare cosa succede quando il numero attuale è congruente a 2 mod 3 e tu sei in stato di C: raddoppiando il numero rende congruente a 4 e quindi di 1 mod 3 e si muove allo stato B, e il raddoppio e l'aggiunta di quello che si lascia in stato C. Così, i tre stati davvero siano collegati correttamente. Tutto questo si riduce a quello che vedo Ted ha dato nella sua risposta: quando si legge un po 'b, sei spostando l'attuale numero uno posto alla sinistra, che moltiplica per 2, e poi tu sei l'aggiunta di b imita FSM l'effetto di tale operazione sul residuo del numero mod 3. risposto 3 maggio 12 in 07:14 Qui è un altro, più pedante, approccio: Lasciate che il numero n somma dk 2k. Definire rk 2k BMOD 3, e notare che RK2 quando k è dispari, e rk 1 quando k è pari. Così n BMOD 3 somma dk rk BMOD 3.This è la chiave per la creazione di un diagramma di stato, con le cifre binarie d0. d come ingressi. Per calcolare la somma, si ha la necessità di monitorare la somma esistente (modulo 3, naturalmente) e se l'indice è pari o dispari (per conoscere il valore di rk). Così lo spazio è stato volte. E 'semplice per creare il diagramma di stato con gli Stati accettazione (0, dispari) e (0, anche). iniziare mathbb amp mathbb, dk0 ampmathbb, dk1 hline (0, dispari) amplificatore (0, anche) amp (1, anche) (0, anche) amplificatore (0, dispari) amplificatore (2, dispari) (1, dispari) amp (1, anche) amplificatore (2, anche) (1, anche) amp (1, dispari) amplificatore (0, dispari) (2, dispari) amplificatore (2, anche) amplificatore (0, anche) (2, anche) amp (2, dispari) amp (1, dispari) finiscono il problema è che ci sono 6 membri, e non 3 come nello schema precedente. Tuttavia, se applichiamo la tabella FSM riempimento Algorithm (ad esempio, vedere Hopcroft, Motwani, Ullman, Introduzione alla teoria degli automi, Languages ​​and Computation) per trovare gli stati indistinguibili, troviamo le seguenti coppie di essere indistinguibili:,,. Il FSM risultante è identico al FSM sopra, con l'individuazione dello stato di una SIM, B sim, e C sim. ha risposto 3 maggio 12 in 20:06 Isn39t questo il RK1 opposto quando k è pari. e rk 2 quando k è dispari. (Ad es k1: rk (21 mod 3) 2, mentre K2: rk (22 mod 3) 1) ndash Dor 25 settembre 15 alle 17:32 Dor: Grazie per la cattura che ndash copper. hat 25 settembre 15 alle 17:50 tua risposta 2017 Stack Exchange, IncIm lavorando su un problema impostato per una classe, e il pensiero di una domanda relativa a cosa stavo lavorando. C'è un numero minimo di Stati che un automa finito deve avere al fine di accettare stringhe binarie che rappresentano i numeri divisibili per un intero n In un set problema in precedenza, sono stato in grado di costruire un DFA che ha accettato stringhe binarie divisibile per 3 con 3 stati . Si tratta di una coincidenza, o c'è qualcosa di inerente al problema generale di rilevare le stringhe divisibile per n che suggerisce un numero minimo di Stati Prometto questo non rispondere a una domanda compiti a casa per me. ) Ha chiesto 29 gennaio 12 in 00:35 HuckBennett Sono d'accordo con Kaveh che la questione dovrebbe essere chiusa il cstheory, per lo più per essere coerente. Tuttavia, ho anche d'accordo con voi: questa è una domanda divertente e la prima volta che vedi DFA è sicuramente uno si dovrebbe chiedere se stessi. Credo che il PO dovrebbe cercare di divertirsi un po 'di lavoro la risposta per se stesso, e quindi consultare math. SE per ulteriori informazioni. ndash Artem Kaznatcheev 9830 29 gennaio 12 alle 6:10 Questa isn39t compiti a casa (anche se it39s ispirate da una domanda compiti a casa), it39s una domanda interessante, ho don39t it39s credo che un risultato ben noto e la risposta alla domanda è apparso in una rivista di ricerca. I don39t vedo perché dovrebbe essere chiuso. Il limite superiore è stato compiti a casa, ed è davvero facile, ma la domanda era circa il limite inferiore. ndash Peter Shor 29 gennaio 12 alle 13: 43i am espressioni regolari auto-studio e hanno trovato un interessante problema pratica on-line che coinvolge la scrittura di una espressione regolare di riconoscere tutti i numeri binari divisibile per 3 (e solo quei numeri). Per essere onesti, il problema ha chiesto di costruire un DFA per un tale scenario, ma ho pensato che dovrebbe essere equivalentemente possibile utilizzando le espressioni regolari. So che theres una piccola regola in atto per capire se un numero binario è divisibile per 3: prendere il numero di quelli in anche luoghi in cifre e sottrarre per il numero di quelli in posti strani in cifre - se questo è uguale a zero , il numero è divisibile per 3 (esempio 110 - 1 in 2 fessura uniforme e un 1 nella dispari 1 slot). Tuttavia, Im avere qualche difficoltà ad adattarsi ad un espressione regolare. Il più vicino Ive venire è rendersi conto che il numero può essere 0, in modo che sarebbe il primo stato. Ho visto anche che tutti i numeri binari divisibile per 3 iniziano con 1, in modo che sarebbe il secondo stato, ma Im bloccato da lì. Qualcuno potrebbe dare una mano ha chiesto 11 marzo 13 alle 1:50 Dopo quello che dice Oli Charlesworth, è possibile costruire DFA per divisibilità del numero di base B da un certo divisore d. dove gli stati del DFA rappresentano il resto della divisione. Per il vostro caso (base 2 - numero binario, divisore D 3 10): Si noti che il DFA sopra accetta stringa vuota come un numero divisibile per 3. Questo può essere facilmente fissato con l'aggiunta di uno stato più intermedio di fronte: La conversione di espressione regolare teorica può essere fatto con il processo normale. La conversione a regex pratico di sapori che supporta regex ricorsiva può essere fatto facilmente, quando avete il DFA. Questo è mostrato per il caso di (base B 10, d 7 10) in questa domanda da CodeGolf. SE. Scomponendola, si può vedere come è costruito. Il raggruppamento atomico (o il gruppo non-backtracking, o di un gruppo che si comporta in modo possessivo) è usato per assicurarsi che solo il vuoto alternativa stringa viene abbinato. Questo è un trucco per emulare (DEFINE) in Perl. Poi i gruppi da A a G corrispondono al resto del 0-6 quando il numero è diviso per 7. risposto 11 marzo 13 al 06:44 Ho un altro modo a questo problema e credo che questo è più facile da capire. Quando stiamo dividendo un numero per 3 possiamo avere tre resti: 0,1,2. Possiamo descrivere un numero che è divisibile per 3 utilizzando l'espressione 3t (t è un numero naturale). Quando stiamo aggiungendo 0 dopo un numero binario il cui resto è 0, il numero effettivo decimale sarà raddoppiato. Poiché ogni cifra si muove ad una posizione più alta. 3t 2 6t, anche questo è divisibile per 3. Quando ci si aggiunge un 1 dopo un numero binario il cui resto è 0, il numero decimale effettivo sarà raddoppiato più 1. Poiché ogni cifra si sta muovendo verso una posizione più alta seguita da un 1 3t 2 1. il resto è 1. Quando stiamo aggiungendo un 1 dopo un numero binario il cui resto è 1. il numero decimale effettivo sarà raddoppiata più uno, e il resto è 0 (3T 1) 2 1 3 6T questo è divisibile per 3. Quando stiamo aggiungendo uno 0 dopo un numero binario il cui resto è 1. il numero effettivo decimale sarà doubled. And il resto sarà 2 (3T 1) 2 6T 2. Quando stiamo aggiungendo uno 0 dopo un numero binario i cui resto è 2. Il resto sarà 1. (3t 2) 2 3t 4 3 (2t 1) 1 Quando si aggiunge un 1 dopo un numero binario il cui resto è 2. Quindi resto sarà ancora 2. (3t 2) 2 1 t 5 3 (2t 1) 2. Non importa quante 1 si aggiunge a un numero binario il cui resto è 2, il resto sarà di 2 per sempre. (3 (t 1) 2) 1 2 3 (t 2) 5 3 (t 3) 2 ha risposto 6 novembre 15 alle ore 20:45 I numeri binari divisibile per 3 caduta in 3 categorie: i numeri con due 1 consecutivi o due separati da 1s un numero pari di 0. Effettivamente ogni coppia si annulla. (Ex 11, 110, 1100,1001,10010, 1111.) (Decimale: 3, 6, 12, 9, 18, 15) Numeri con tre 1s ciascuno separati da un numero dispari di 0s. Questi tre gemelli si annullano anche se stessi fuori. (Ex 10101, 101010, 1.010.001, 1.000.101.) (Decimali: 21, 42, 81, 69) una combinazione delle prime due regole (di cui uno dentro l'altro) (Es. 1.010.111, 1.110.101, 1.011.100,110001 millions) (decimali: 87, 117 , 5937) Quindi una espressione regolare che tiene conto di queste tre regole è semplicemente: significa che il numbergroup precedente è opzionale indica una scelta di opzioni su entrambi i lati all'interno del parenthesesBelow, ho scritto una risposta per n è uguale a 5, ma è possibile applicare stesso approccio per disegnare DFA per ogni valore di n e qualsiasi posizionale sistema numerico binario ad esempio, ternario. In primo luogo appoggiare il completo DFA termine, un DFA definito in completo dominio: Q Q viene chiamato Complete DFA. In altre parole, possiamo dire che nel diagramma di transizione completa DFA non vi è alcun margine mancanti (ad esempio, da ogni stato in Q vi è un bordo in uscita presenti per ogni simbolo lingua). Nota: A volte definiamo parziale DFA come Q Q (Leggi: Come funziona: Q Q leggere nella definizione di un DFA). Progettare DFA accettare numeri binari divisibili per numero n: Fase-1. Se si divide un numero per n allora promemoria può essere 0, 1 (n - 2) o (n - 1). Se resto è 0 che significa che è divisibile per non n per il contrario. Così, nel mio DFA ci sarà uno stato q r che sarebbe corrispondente a un valore residuo r. dove 0 lt r lt (n - 1). e il numero totale di stati in DFA è n. Dopo l'elaborazione di una stringa di numeri sopra, lo stato finale è q r implica che n R (operatore promemoria). In ogni automi, lo scopo di un stato è come elemento di memoria. Uno stato in un atomata memorizza alcune informazioni come i fan interruttore che può dire se il ventilatore è in fuori o in sullo stato. Per n 5, cinque stati in DFA corrispondente a cinque informazioni di richiamo come segue: Stato q 0 raggiunta se ricordo è 0. Stato q 0 è lo stato finale (accettazione dello stato). E 'anche uno stato iniziale. Stato q 1 raggiunge se ricordo è 1, uno stato non-finale. q Stato 2 se ricordo è 2, uno stato non-finale. q Stato 3 se ricordo è 3, uno stato non-finale. q Stato 4 se ricordo è 4, uno stato non-finale. Utilizzando informazioni sopra riportate, si può iniziare a disegnare transizione schema TD di cinque stati come segue: Quindi, 5 stati per 5 valori resto. Dopo l'elaborazione di una stringa se end-Stato diventa q 0 che significa equivalente decimale di stringa di input è divisibile per 5. Nella figura sopra q 0 è contrassegnato stato finale come due cerchi concentrici. Inoltre, ho definito una regola di transizione: (q 0 0.) Q 0 come un ciclo di auto per il simbolo 0 a q stato 0. questo è dovuto al fatto equivalente decimale di qualsiasi stringa consiste di soli 0 è 0 e 0 è un divisibile per n. Passo 2 . TD sopra è incompleta e può solo le stringhe di processo di 0 s. Ora aggiungere un po 'più bordi in modo che possa elaborare successive stringhe di numeri. Controllare tabella che segue, mostra nuova transizione governa passo successivo quelli possono essere aggiunti: Per elaborare stringa binaria 1 ci dovrebbe essere una regola di transizione: q 1 Two (q 0 1.): - Binario rappresentazione è 10. stato finale dovrebbe essere q 2 . e per elaborare 10. abbiamo solo bisogno di aggiungere un altro regola di transizione: (q 1 0.) q 2 Path. (Q 0) 1 (q 1) 0 (q 2) Tre: - in binario è 11. stato finale è q 3. e abbiamo bisogno di aggiungere una regola di transizione: (q 1 1.) q 3 Path. (Q 0) 1 (q 1) 1 (q 3) Quattro: - in binario 100. stato finale è q 4. TD processi già stringa di prefisso 10 e abbiamo solo bisogno di aggiungere una nuova regola di transizione: (q 2 0.) Q 4 Path. (Q 0) 1 (q 1) 0 (q 2) 0 (q 4) Step-3. Cinque 101 diagramma di transizione di sopra in figura-2 è ancora incompleta e ci sono molti angoli mancanti, per un esempio non è definita alcuna transizione per: (. Q 2 1) -. E la regola deve essere presente per elaborare le stringhe come 101. Perché 101 5 è divisibile per 5, e di accettare 101 Vorrei aggiungere: (q 2 1.) Q 0 in figura sopra-2. Percorso: (q 0) 1 (q 1) 0 (q 2) 1 (q 0) con questa nuova regola, diagramma di transizione diventa come segue: Qui di seguito in ogni passo prendo successivo successivo numero binario per aggiungere un bordo mancante fino al mio TD come DFA completo. Siamo in grado di elaborare 11 nel presente TD nella figura-3 come: (q 0) 11 (q 3) 0 (). Perché 6 5 1 questo significa aggiungere una regola: (q 3 0.) Q 1. Step-6 Aggiungi dodici, tredici, quattordici il numero totale di spigoli in diagramma di transizione figura-12 sono 15 Q 5 3 (a DFA completo). E questo DFA può accettare tutte le stringhe sono costituite su quelli equivalente decimale è divisibile per 5. Se si nota ad ogni passo, nel tavolo ci sono tre voci, perché ad ogni passo aggiungo tutti i possibili margini in uscita da uno stato di fare un DFA completo (e aggiungo un bordo in modo che lo stato qr ottiene per il resto è r) per aggiungere ulteriore, ricorda l'unione di due linguaggi regolari sono anche un normale. Se avete bisogno di progettare un DFA che accetta stringhe binarie quelli equivalente decimale è sia divisibile per 3 o 5, quindi disegnare due DFA separata per divisibile per 3 e 5 quindi l'unione sia DFA per costruire bersaglio DFA (per 1 lt n lt 10 vostro abbia all'unione 10 DFA). Se vi viene chiesto di disegnare DFA che accetta stringhe binarie in modo tale che equivalente decimale è divisibile per 5 e 3 sia poi siete alla ricerca di DFA di divisibile per 15 (ma che dire di 6 e 8). Nota: DFA disegnate con questa tecnica saranno ridotti al minimo DFA solo quando non vi è alcun fattore comune tra il numero n e base per esempio non vi è compreso tra 5 e 2 nel primo esempio, o tra 5 e 3 secondo esempio, e quindi sia DFA costruito sopra sono ridotti al minimo DFA. Se siete interessati a leggere ulteriormente sui possibili mini stati per il numero n e la base B leggere la carta: divisibilità e Stato complessità. di seguito ho aggiunto uno script Python, ho scritto per divertirsi imparando Python biblioteca pygraphviz. Sto aggiungendo che spero possa essere utile per qualcuno in qualche modo. Progettare DFA per la base b stringhe numero divisibile per il numero n: Quindi possiamo applicare sopra trucco per attirare l'DFA di riconoscere le stringhe numero in qualsiasi base b quelli sono divisibili un dato numero n. In quel DFA numero totale dei membri saranno n (per n resti) e il numero di spigoli deve essere uguale a B n mdash che è completo DFA: b numero di simboli nel linguaggio di DFA e n numero di stati. Utilizzando sopra trucco, sotto ho scritto uno script Python disegnare DFA per la base di ingresso e numero. Nella sceneggiatura, la funzione dividedbyN popola regole di transizione DFAS nei passaggi numero di base. In ogni fase-num, converto num in numero nums stringa utilizzando la funzione Basen (). Per evitare l'elaborazione di ogni stringa numero, ho usato un data-struttura temporanea LOOKUPTABLE. In ogni fase, stato finale per numero nums stringa viene valutata e conservato in LOOKUPTABLE da utilizzare nel passaggio successivo. Per grafo di transizione di DFA, ho scritto una funzione drawtransitiongraph utilizzando biblioteca Pygraphviz (molto facile da usare). Per utilizzare questo script è necessario installare graphviz. Per aggiungere bordi colorati in diagramma di transizione, che genera in modo casuale codici di colore per ogni funzione simbolo getcolordict. Allo stesso modo, entrano base 4 e il numero 7 per generare - dfa accettare stringa di numero in base a 4 quelli sono divisibili per 7 Btw, provare a cambiare il nome del file di. png o. jpeg.

No comments:

Post a Comment