7 votos

Quicksort con Trivalued Lógica

¿Alguien sabe una manera de hacer una ordenación rápida con trivalued lógica?

El problema que estoy tratando de resolver es este: estoy tratando de mostrar una vista de un complejo de objetos 3d a partir de un determinado ángulo de visión. He roto el objeto en muchas superficies 2d que puedo dibujar por separado, pero para mostrar la imagen correctamente, necesito determinar el orden z de la superficie – un clásico del dibujo en el ordenador de problema. Se garantiza que ninguna de las superficies se cruzan, por lo que el problema es solucionable. Sería sencillo si en la comparación de las dos superficies, siempre se podía determinar que uno es en la parte delantera – un simple mergesort sería suficiente. Pero muy a menudo, si puedo comparar dos superficies, se verá que, con el ángulo que estoy viendo, no hay coincidencia en todos los. Una superficie es más de aquí, y el otro de la superficie es de allí, así que es imposible decir que uno está en frente.

En términos matemáticos, lo que yo estoy tratando de hacer es ordenar un conjunto de entidades, a llamar a, b, c, etc. La transitividad es garantizado: Si a < b es verdadera y b< c es verdadera, entonces a < c es siempre cierto. Pero el factor que complica la situación es el trivalued lógica: a < b podría ser desconocido. Una consecuencia de ello es el final de la lista ordenada puede contener pequeños conjuntos de elementos dentro de la cual el orden no importa, por ejemplo. El resultado puede ser un < (b, c) < d, etc.

Tenga en cuenta que incluso si a < b es desconocido, otras comparaciones que pueden obligar indirectamente a un cierto orden de a, b. Por ejemplo. Si a < b es desconocida, pero resulta que a < c = true y b < c es falsa, entonces el orden debe ser a < c < b.

Me puede resolver el problema con una especie de burbuja, pero que malo, porque O(N^2) comparaciones, y cada comparación es muy caro (ya que consiste en averiguar si dos superficies pueden bloquear cada uno de los otros cuando se ve desde un cierto ángulo). Es allí una manera de resolver esto con un rápido tipo? (por ejemplo. Algunos de adaptación de un mergesort)?

4voto

k3b Puntos 410

Lo que tenemos no es realmente un trivalued la lógica, sino un conjunto parcialmente ordenado (aka poset). Existe un amplio cuerpo de investigación sobre la ordenación de conjuntos parcialmente ordenados (una rápida búsqueda en google para "poset clasificación" da algunos buenos golpes). En particular, usted puede querer buscar algo que se llama una "cadena de combinación de estructura de datos". También, un papel que se llama "la Clasificación y la Selección en el Posets".

-1voto

mxmissile Puntos 382

A pesar de que sus superficies son a veces incomparable (este es el tercer valor en que se espera la lógica trivalente), creo que no es necesario preocuparse por ello aquí. Si por dos superficies, ni está en frente de la otra para el punto de vista, entonces se puede dibujar uno antes que el otro, no importa. Así que cuando usted ordenar las superficies que usted puede de manera arbitraria elegir uno (o los otros) antes que el otro y no estropear el dibujo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X