Siempre vemos que las operaciones en un árbol (búsqueda binaria) tienen el peor tiempo de ejecución de O (logn) debido a que la altura del árbol es logn. Me pregunto si nos dicen que un algoritmo tiene tiempo de ejecución en función de logn, por ejemplo m + nlogn, ¿podemos concluir que debe involucrar un árbol (aumentado)?¿Es O (logn) siempre un árbol?
EDIT: Gracias a sus comentarios, ahora me doy cuenta de que divide-conquista y el árbol binario son muy similares visualmente/conceptualmente. Nunca había hecho una conexión entre los dos. Pero pienso en un caso en el que O (logn) no es un algo de divide y vencerás que involucra un árbol que no tiene ninguna propiedad de un árbol BST/AVL/rojo-negro.
Esa es la estructura de datos set disjunta con operaciones Find/Union, cuyo tiempo de ejecución es O (N + MlogN), siendo N el n. ° de elementos y M el número de operaciones de búsqueda.
Por favor, avíseme si me falta algo, pero no puedo ver cómo divide-conquista entra en juego aquí. Acabo de ver en este caso (conjunto disjunto) que tiene un árbol sin propiedad BST y que el tiempo de ejecución es una función de logN. Entonces mi pregunta es por qué/por qué no puedo hacer una generalización a partir de este caso.
Solo un árbol balanceado es altura lgn. Es perfectamente posible realizar operaciones en árboles que dan como resultado alturas que se aproximan a N en lugar de lgn. (por ejemplo, insertar una matriz ordenada en un árbol no autoequilibrado).) – KitsuneYMG
Cuidado con las matemáticas. 'm + nlogn' no es' O (log n) ', es' O (n log n) '. – Potatoswatter
Estoy de acuerdo. Estaba pensando en el árbol AVL/rojo-negro y en los bosques desunidos cuando me encontré con la pregunta. – Martin08