Classe di complessità corrispondente all'ordinamento


14

Due parti di TCS sono algoritmi e complessità. Dirò semplicisticamente che gli algoritmi sono lo studio dei limiti superiori, dimostrando che puoi fare qualcosa (con determinate risorse limitate), e la complessità sta nel mostrare che non puoi farlo senza alcune risorse minime.

Così spesso un problema algoritmico è dichiarato in un modello decisionale per inserirlo in una classe di complessità.

Ma qualcosa che mi ha sempre infastidito è che alcuni algoritmi elementari non vengono mai citati come appartenenti a una determinata classe. Un esempio è l'ordinamento (confronto). Prova come potrei, una classe pertinente sembra troppo carente (davvero, sta solo controllando nello spazio di log che il risultato è ordinato? Sembra solo troppo debole, o non sto ottenendo la versione della decisione giusta).

Qual è la classe di complessità migliore / più appropriata / più utile in cui si trova l'ordinamento comparativo?

Risposte:


17

Il problema di ordinamento è in realtà completo per TC0 (con riduzione ). Una fonte standard per questo è la Sezione 1.4.3 del libro di Vollmer .UNC0

Si noti che è la classe di problemi decisionali, ma di solito pensiamo all'ordinamento come a un problema di funzione, cioè vogliamo produrre i numeri, diciamo, in ordine decrescente. Tuttavia, possiamo anche definire l'ordinamento come un problema decisionale come segue:TC0

Data una sequenza di numeri e due numeri k , p [ n ] , vogliamo decidere se a k è nella posizione p nella sequenza che otteniamo ordinando un 1 , ... , a n in non-diminuzione ordine. Nota che per evitare ambiguità, quando a i = a j , vogliamo che un i preceda a j se i < j .un'1,...,un'nK,p[n]un'Kpun'1,...,un'nun'io=un'jun'ioun'jio<j


Eccellente ... specificato quale problema di decisione formale?
Mitch,

1
Sarebbe doppio eccellente includere un riferimento nella tua risposta.
Oleksandr Bondarenko,

@Mitch e @Okeksandr: grazie per i tuoi commenti! Ho appena esteso la mia risposta per chiarire quei punti.
Dai Le

Sembra il problema decisionale per le statistiche degli ordini. C'è un problema correlato in cui tutto è al posto giusto? Qualcosa come dare una sequenza e una permutazione σ su [ 1 .. n ] , decide se 1 k < j n , a σ k < a σ j . Questo è difficile come il tuo; è più difficile o completo per una classe inclusa? un'1...un'nσ[1 ..n]1K<jn,un'σK<un'σj
Mitch,

2
@Mitch: credo che controllare se tutto sia nel posto giusto in quel modo sia in realtà più facile dell'ordinamento. L'intuizione è che puoi verificare che per tutte le coppie possibili ( a σ k , a σ j ) con k < j in parallelo, che credo possa essere fatto in A C 0 . Per il problema di ordinamento sopra riportato, è necessario "contare" per capire la posizione corretta di un numero nell'ordinamento lineare. un'σK<un'σj(un'σK,un'σj)K<jUNC0
Dai Le

0

Credo che FP sia quello che stai cercando.


Bene, sto piuttosto cercando la classe di complessità decisionale pertinente piuttosto che quella funzionale, ma anche così, sono abbastanza certo che l'ordinamento di confronto non sia vicino a P-complete (o FP-complete), quindi mi aspetto una classe più piccola per la quale dovrebbe essere / completare.
Mitch,

Non sapevo che la completezza fosse uno dei requisiti della tua domanda. Come problema decisionale (se si ignora il vincolo di completezza) perché P non sarebbe accettabile come risposta? Dato un DTM puoi produrre e validare un certificato in tempo polinomiale.
Nicholas Mancuso,

Dato un problema generale, ciò che di solito voglio sapere non è solo che è il momento polinomiale, ma la classe più piccola in cui potrebbe trovarsi. Mi piacerebbe sapere se è in LOGCFL, NL, L, AC_0, ecc. Completezza è un modo in cui "non puoi" fare di meglio. Quindi non è un requisito della mia domanda, ma è probabile che ci sia una risposta.
Mitch,
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.