2012-10-11 41 views
5

Por lo tanto, para aclarar la cuestión:Dos conjuntos de elementos. Cada elemento del conjunto A un partido único en el conjunto B. ajuste de cada elemento del conjunto A al punto B en conjunto en O (nlogn) Tiempo de

Conjunto A y B Conjunto cada elemento en el conjunto A tiene un compañero en el conjunto B no puede ordenar ninguno de los conjuntos basándose en compararlo con miembros del mismo conjunto, es decir, cada elemento b de B es indistinguible de cualquier otro b del conjunto B (del mismo modo para A). cuando Ai se combina con Bi, puede decir si Bi > Ai, Bi < Ai o Bi = Ai. diseñe un algoritmo con tiempo de ejecución O (nlogn).

La respuesta obvia con el tiempo cuadrático es trivial y no útil, aunque es lo mejor que he encontrado hasta ahora. El registro (n) me hace pensar que debería estar utilizando la recursividad o un árbol binario de algún tipo, pero no estoy seguro de cómo podría crear un árbol binario sin poder comparar elementos del mismo conjunto. Además, no estoy seguro de cómo utilizar una llamada recursiva con un efecto mayor que solo ejecutar bucles anidados. Algún consejo sería de gran aprecio.

+0

Ordénelas y utilice un solo bucle para recorrer todos los elementos. Si tiene una estructura de datos establecida desde el principio, puede sacar el iterador y recorrerlo. – nhahtdh

+0

Entonces, ¿está diciendo que las A y las B no son comparables entre sí, pero puede comparar cada A con cada B y necesita encontrar pares tales que 'A == B'? – verdesmarald

+0

Este problema es básicamente idéntico al problema de las tuercas y tornillos coincidentes según lo establecido por gowaayacct. Gracias por la atención sin embargo. – slmyers

Respuesta

9

No lo ha declarado muy claramente, pero su pregunta se parece sospechosamente al problema Matching Nuts and Bolts.

La idea es elegir una tuerca aleatoria a, encontrar el perno correspondiente b. Particione los pernos usando la tuerca a, y particione las tuercas usando Bolt b, y luego recurse, como lo hace la línea rápida.

(Por supuesto, estamos hablando de que el caso promedio es nlogn, en lugar del peor de los casos).

+1

Muchas gracias, esto fue muy útil. Trataré de ser más claro en el futuro, y te votaría si tuviera la reputación. – slmyers

Cuestiones relacionadas