Actualmente estoy leyendo this paper y en la página cinco, se describen las propiedades de montones binarios que considera que son de dominio público. Sin embargo, uno de los puntos que hacen es algo que no he visto antes y que no tiene sentido. Los autores afirman que si le dan un montón binario equilibrado, puede enumerar los elementos de ese montón en orden ordenado en el tiempo O (log n) por elemento utilizando una búsqueda estándar de ancho de banda. Aquí está su redacción original:¿Listar valores en un montón binario en orden ordenado utilizando la búsqueda de ancho de banda?
en un montón equilibrada, cualquier nuevo elemento puede ser inserta en el tiempo logarítmica. Podemos enumerar los elementos de un montón en orden por peso, tomando un tiempo logarítmico de para generar cada elemento, simplemente usando la primera búsqueda de ancho.
No estoy seguro de lo que los autores quieren decir con esto. Lo primero que viene a la mente cuando dicen "búsqueda de amplitud" sería una búsqueda de amplitud de los elementos de árbol que comienzan en la raíz, pero no se garantiza que los elementos estén en orden ordenado, ni se necesita tiempo logarítmico por elemento Por ejemplo, la ejecución de un BFS en este min heap produce los elementos fuera de orden no importa cómo se rompen los lazos:
1
/\
10 100
/\
11 12
Esto siempre enumera 100 antes de 11 o 12, que es claramente erróneo.
¿Echo de menos algo? ¿Hay una búsqueda simple de amplitud que puede realizar en un montón para obtener los elementos en orden ordenado usando tiempo logarítmico cada uno? Claramente, puedes hacer esto modificando de forma destructiva el montón eliminando el elemento mínimo cada vez, pero la intención de los autores parece ser que esto se puede hacer de forma no destructiva.
Eso es raro, BFS simples deben tomar O (1) por elemento (y no funcionaría, como usted ha dicho). – svick