Esiste un linguaggio indefinibile di parole finite?


10

È necessario che LΣ sia infinito per essere indecidibile?

Voglio dire, se scegliamo una lingua L essere una versione limitata limitata di LΣ , ovvero |L|N , ( NN ), con LL . È possibile che L sia un linguaggio indecidibile?

Vedo che esiste un problema di "Come scegliere le N parole che per le quali dobbiamo stabilire una regola per scegliere quali sarebbero i primi elementi di , una sorta di operazione a stella "finita" di Kleene . L'obiettivo è trovare un linguaggio indecidibile senza aver bisogno di un set infinito, ma non riesco a vederlo. N L L"NL

EDIT Nota:

Anche se ho scelto una risposta, molte risposte e tutti i commenti sono importanti.


Sembra che ci siano (almeno) tre domande qui. Concentrati su uno e modifica gli altri.
Raffaello

Ho rimosso i riferimenti al gruppo di alimentazione in quanto non è rilevante qui; è finito se e solo se è finito. SP(S)S
Raffaello

@Raphael Va bene, ma menziono il power set perché a volte leggo "non c'è alcuna sorpresa da su , quindi deve esistere un linguaggio indecidibile". P ( N ) NP(N)L | L | NN N P (S)Vorrei capire perché non ha funzionato con un set finito , con con finito, invece di aver bisogno di , ecco perché ho messoL|L|NN NP(S)
Hernan_eche

1
Per quanto ne so, l'esistenza di linguaggi indecidibili non segue immediatamente la non esistenza di tale suriezione; hai bisogno di qualche pezzettino in più. Perché, sarebbe un'altra domanda meravigliosa! Perché non vai avanti e lo chiedi? Da quello, dovresti vedere perché l'argomento non ripercorre le lingue finite.
Raffaello

3
Le lingue finite sono decidibili, punto, fine della storia. Ci sono un numero qualsiasi di algoritmi per questo. Se insisti sul classico modello di Turing Machine, puoi farlo anche in questo modo, anche se in modo meno evidente. Non c'è bisogno di invocare automi a stati finiti o linguaggi regolari o qualsiasi altro modello di automa, poiché in realtà sono eccessivi senza ulteriore chiarezza nei confronti di Turing Machines.
David Lewis,

Risposte:


15

Sì, è necessario che sia infinito per essere indecidibile.L

Per sommare le risposte di Raphael e Sam, dovresti pensare a "decidibile" come cose che un programma per computer può risolvere. Il programma richiesto è molto semplice, deve solo produrre "Sì" per gli elementi in , oppure dire di no.L

Quindi più è "complessa" , più è lungo il programma che devi scrivere. In altre parole, più è lungo il programma che esegui, puoi controllare più cose ... Quindi se qualcuno dà una lingua che è finita, dì , puoi scrivere il seguente programma:L L = { a 1 , a 2 , , a n }LLL={a1,a2,,an}

if INPUT = $a_1$ output Yes;
if INPUT = $a_2$ output Yes;
...
if INPUT = $a_n$ output Yes;
output No;

Ora, se qualcuno ti dà una più grande (ma finita), scriverai solo un programma più lungo. Questo è sempre vero, e ogni finita avrà il suo programma. L'unico caso "interessante" è ciò che accade quando è infinito: il tuo programma non può essere infinito.L LLLL

La questione dell '"indecidibilità" è ancora più interessante: sono quelle (infinite) che non hanno un programma che funzioni correttamente per loro. Sappiamo che tali lingue devono esistere poiché ci sono molte più (infinite) lingue rispetto al numero di programmi di lunghezza finita (ma illimitata).LLL


+1 Questa è una risposta molto chiara, vorrei che espandessi un punto, hai detto "se qualcuno ti dà una più grande (eppure finita), scriverai un programma più lungo" * ma penso che il opposto, dato un insieme finito ** ** fisso di programmi , che cosa se non è possibile scrivere un programma più lungo credo che alcuni imput L un insieme finito, verrà fuori YES, e altri no. Come P ( P ) > K , alcuni degli imput L corrisponderanno alle funzioni dell'indicatore ma * la maggior parteP | P | = K P LP|P|=KLP(P)>KLP no !, poiché lingue possibili > K2K>Kpossibili programmi, quindi ci saranno problemi indecidibili. Ho sbagliato? perché?
Hernan_eche,

1
infatti, se limiti la dimensione del programma a allora ci sono al massimo programmi diversi che classificano correttamente al massimo lingue diverse (infinito o no). Quindi per quella serie specifica di programmi esistono lingue indecide e persino finite. Ma questa è un'affermazione più debole, poiché si considera solo un numero limitato di programmi (ad esempio, , si hanno solo 2 programmi possibili; ovviamente non saranno in grado di fare molto e falliranno in quasi tutte le lingue )O ( 2 k ) O ( 2 k ) | P | = 1 L|P|=kO(2k)O(2k)|P|=1L
Ran G.,

grazie, so che è un'affermazione più debole, ma è audace che ci possano essere lingue indecidibili finite e infinite, e penso che questo caso speciale debba essere incluso nella tua risposta, la parte "Sì, c'è bisogno che L sia infinita in per essere indecidibile ". sembra non essere necessario in determinate condizioni.
Hernan_eche,

6
Non esattamente. Il termine "indecidibile" ha un significato specifico: non decidibile da una macchina di Turing standard. Quindi, per essere undecidable, deve essere infinito. Quello che vuoi non è altro che un termine diverso, cioè "non decidibile per ". Chiamare quest'ultimo -undecidable. Quindi lì per qualsiasi finita , non è necessario che sia infinita per essere -undecidable. Basta non confondere (o usare impropriamente) e -undecidableP P P L P PL undecidablePPPLPundecidableP
Ran G.

10

Non sono sicuro di aver capito bene la domanda, ma ogni linguaggio finito è regolare. Non ci sono lingue regolari che sono indecidibili e quindi non ci sono lingue finite che sono indecidibili. Tutte queste affermazioni sono ben note e le prove possono essere trovate in Hopcroft e Ullman .


8

Se la tua lingua è finita, puoi eseguire la ricerca di una tabella su una tabella codificata contenente tutte le parole in L . È scomodo scrivere come macchina di Turing, ma in altri modelli equivalenti è abbastanza chiaro.L'L

In effetti, automi finiti sono sufficienti. Costruire un automa per come segue:L

  1. Per ogni , creare una catena lineare di stati che accetta w .wLw
  2. Crea un nuovo stato iniziale .q0
  3. Collegare agli stati iniziali di tutti gli automi costruiti in 1. con ε -transitions.q0ε

L'automa così costruito accetta ovviamente . Pertanto, L è regolare e quindi calcolabile (da R E GR E ).L'L'REsolRE

Si noti che alcuni ragionamenti valgono per il co-finito , ovvero | ¯ L | < ; hai semplicemente codificato gli elementi non in L .L'|L'¯|<L'


2

Per essere del tutto interessante (allo scopo di pensare alla calcolabilità) un problema decisionale deve avere infinitamente molte risposte "sì" e infinitamente molte risposte "no". Tali problemi di decisione corrispondono esattamente alle lingue che contengono infinitamente molte stringhe sul loro alfabeto e inoltre escludono infinitamente molte stringhe sul loro alfabeto.

Qualsiasi altra cosa è banalmente in grado di essere codificata solo in una quantità limitata di informazioni (nella peggiore delle ipotesi semplicemente un grande elenco di stringhe nella lingua o meno), e quindi calcolabile da semplici DFA / espressioni regolari. Spero che dovrebbe essere ovvio che per qualsiasi elenco finito di stringhe puoi immediatamente scrivere un'espressione regolare che semplicemente ORsima tutte le stringhe.

Una arguzia del mio professore di teoria della computazione era che il problema di "esiste Dio?" è calcolabile: viene calcolato da una macchina che accetta immediatamente o da una macchina che rifiuta immediatamente; semplicemente non sappiamo quale!

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.