Clase de complejidad correspondiente a la clasificación.

14

Dos partes de TCS son algoritmos y complejidad. Voy simplista decir que los algoritmos es el estudio de los límites superiores, lo que demuestra que se puede hacer algo (con recursos restringidos, dados), y la complejidad se trata de demostrar que usted no puede hacerlo sin algunos recursos mínimos.

Muy a menudo se plantea un problema algorítmico en un modelo de decisión para ubicarlo en una clase de complejidad.

Pero algo que siempre me molestó es que algunos algoritmos elementales nunca se mencionan directamente como pertenecientes a una clase en particular. Un ejemplo es la clasificación (de comparación). Por más que lo intente, una clase relevante simplemente parece demasiado deficiente (realmente, ¿es solo verificar en el espacio de registro que el resultado está ordenado? Eso simplemente parece demasiado débil, o no estoy obteniendo la versión de decisión correcta).

¿Cuál es la clase de complejidad mejor / más apropiada / más útil en la que se encuentra la clasificación comparativa?

Mitch
fuente

Respuestas:

17

El problema de clasificación está realmente completo para TC0 (bajo reducción de ). Una fuente estándar para esto es la Sección 1.4.3 del libro de Vollmer .AC0

Tenga en cuenta que es la clase de problemas de decisión, pero generalmente pensamos en la clasificación como un problema de función, es decir, queremos generar los números, por ejemplo, en orden no decreciente. Sin embargo, también podemos definir la clasificación como un problema de decisión de la siguiente manera:TC0

Dada una secuencia de números y dos números k , p [ n ] , queremos decidir si un k está en la posición p en la secuencia que se obtiene al clasificar un 1 , ... , un n en no decreciente orden. Tenga en cuenta que para evitar la ambigüedad, cuando a i = a j , queremos que a i preceda a j si i < j .a1,,ank,p[n]akpa1,,anai=ajaiaji<j

Dai Le
fuente
Excelente ... especificado como qué problema de decisión formal?
Mitch
1
Sería doblemente excelente incluir una referencia en su respuesta.
Oleksandr Bondarenko
@Mitch y @Okeksandr: ¡Gracias por tus comentarios! Acabo de extender mi respuesta para aclarar esos puntos.
Dai Le
Eso suena como el problema de decisión para las estadísticas de pedidos. ¿Hay algún problema relacionado donde todo está en su lugar correcto? Algo así como una secuencia dada y una permutación σ en [ 1 .. n ] , decide si 1 k < j n , una σ k < un σ j . Esto es tan difícil como el tuyo; ¿Es más difícil o completo para una clase incluida? a1...anσ[1..n]1k<jn,aσk<aσj
Mitch
2
@Mitch: Creo que verificar si todo está en el lugar correcto de esa manera es realmente más fácil que ordenar. La intuición es que puede verificar que para todos los pares posibles ( a σ k , a σ j ) con k < j en paralelo, lo que creo que se puede hacer en A C 0 . Para el problema de clasificación anterior, debe poder "contar" para determinar la posición correcta de un número en el orden lineal. aσk<aσj(aσk,aσj)k<jAC0
Dai Le
0

Creo que FP es lo que estás buscando.

Nicholas Mancuso
fuente
Bueno, estoy buscando la clase de complejidad de decisión relevante en lugar de la clase funcional, pero aun así, estoy bastante seguro de que la clasificación de comparación no está cerca de P-complete (o FP-complete), por lo que espero una clase más pequeña para la que se espera que esté / complete.
Mitch
No sabía que la integridad era uno de los requisitos para su pregunta. Como un problema de decisión (si ignora su restricción de integridad) ¿por qué P no sería aceptable como respuesta? Dado un DTM, puede producir y validar un certificado en tiempo polinómico.
Nicholas Mancuso
Dado un problema general, lo que generalmente quiero saber no es solo que es tiempo polinómico, sino la clase más pequeña en la que podría estar. Me gustaría saber si está en LOGCFL, NL, L, AC_0, etc. Completitud es una forma en que "no puedes" hacerlo mejor. Así que no es un requisito de mi pregunta, pero es probable que sea una respuesta.
Mitch