Búsqueda Binaria en Matrices con Python
Clase 34 de 35 • Curso de Algoritmos Avanzados: Patrones de Arrays y Strings
Contenido del curso
- 3

Patrón de Dos Apuntadores en Algoritmos de Lista
02:56 - 4

Verificación de Orden en Diccionario Alienígena
02:56 - 5

Ordenamiento de Palabras en Idiomas Alienígenas
12:05 - 6
Playground: Verifying Alien Dictionary
00:00 - 7

Ordenación de Palabras en Diccionario Alienígena
15:07 - 8

Combinar Listas Ordenadas en un Array Ascendente
02:11 - 9

Ordenamiento de Listas con Complejidad Óptima y Espacio Constante
11:44 - 10
Playground: Merge Two Sorted Lists
00:00 - 11

Intercalación de Listas Ordenadas en Python
09:04 - 12

Resolver el problema "Container with Most Water" en Python
01:18 - 13

Cálculo Óptimo de Área en Listas de Alturas
09:02 - 14
Playground: Container with Most Water
00:00 - 15

Implementación de solución de cálculo de área máxima en Java
15:42 - 16

Implementación de Trapping Rainwater en Complejidad Lineal
01:02 - 17
Retos de Algoritmos con Apuntadores en Python
02:44 - 18
Patrones de Dos Apuntadores: Soluciones a Problemas Comunes en Python
06:43
- 19

Patrón Ventana Deslizante para Análisis de Datos Secuenciales
02:33 - 20

Subcadena más larga sin caracteres repetidos: patrón ventana deslizante
01:51 - 21

Algoritmo de Ventana Deslizante para Subcadenas Únicas
11:05 - 22
Playground: Longest Substring Without Repeating Characters
00:00 - 23

Algoritmo Python para Substring más Largo Sin Repeticiones
14:16 - 24
Retos de Algoritmos: Dos Apuntadores y Subcadenas
01:50 - 25
Máximos 1s Consecutivos y Subcadenas sin Repeticiones
03:22
- 26

Algoritmo de búsqueda binaria en listas ordenadas
09:26 - 27

Búsqueda en Arrays Rotados: Encontrar Entero en Lista Ordenada
02:19 - 28

Búsqueda Binaria en Arreglos Rotados
04:59 - 29
Playground: Search in Rotated Arrays
00:00 - 30

Búsqueda en Arrays Rotados con C++
10:53 - 31

Búsqueda eficiente en matriz ordenada MxN
01:44 - 32

Búsqueda Binaria en Matrices 2D Ordenadas
06:33 - 33
Playground: Search 2D Array Matrix
00:00 - 34

Búsqueda Binaria en Matrices con Python
07:48
¿Cómo buscar un elemento en una matriz usando búsqueda binaria en Python?
Bienvenidos a esta clase del curso de Platzi, donde exploraremos cómo solucionar el problema "Search into DRA Matrix" utilizando búsqueda binaria en Python. Vamos a abordar este desafío paso a paso, entender cómo implementar la solución y reconocer la eficiencia del algoritmo.
¿Cuál es el problema que estamos resolviendo?
El objetivo de este ejercicio es determinar si un elemento se encuentra en una matriz dada. A diferencia de ejercicios anteriores donde se requería devolver una posición, aquí debemos regresar simplemente True o False. La premisa es realizar una búsqueda binaria en la matriz, explorando primero las columnas y luego las filas, de manera óptima.
¿Cómo se implementa la búsqueda binaria en columnas y filas?
El proceso incluye dos etapas principales de búsqueda binaria: horizontal (columnas) y vertical (filas). Empecemos con el código:
def search_in_matrix(matrix, target):
# Inicializamos apuntadores para la izquierda y la derecha
left = 0
right = len(matrix) - 1
# Primero, identificación de la columna
while left <= right:
mid = left + (right - left) // 2
if matrix[mid][0] == target:
return True
elif matrix[mid][0] < target:
left = mid + 1
else:
right = mid - 1
# Ahora buscamos en la fila identificada
row = matrix[right]
left, right = 0, len(row) - 1
while left <= right:
mid = left + (right - left) // 2
if row[mid] == target:
return True
elif row[mid] < target:
left = mid + 1
else:
right = mid - 1
# Caso base, si el elemento no fue encontrado
return False
Este código ilustra cómo se logra la búsqueda en dos etapas, primero ajustando los apuntadores para las columnas y luego para una fila específica, bajo el paradigma de búsqueda binaria.
¿Qué debemos considerar sobre la complejidad?
La búsqueda binaria es conocida por su eficiencia. En este caso particular:
- Complejidad Temporal: La búsqueda binaria en columnas y filas resulta en una complejidad de O(log n), donde n es el número de elementos en la matriz.
- Complejidad Espacial: O(1), ya que solo utilizamos un número constante de variables, independientemente del tamaño de los datos de entrada.
¿Qué hace única esta implementación?
Lo que hace particularmente interesante esta solución es el doble uso de la búsqueda binaria, una vez horizontal y otra vertical, permitiendo encontrar un elemento específico de manera muy eficiente en una matriz ordenada. Además, esta metodología es extensible y puede ser implementada en otros lenguajes de programación según las necesidades del desarrollador.
Siéntanse motivados a probar sus propias soluciones, quizás en otros lenguajes, o con pequeñas modificaciones para adaptarlas a diferentes escenarios. La práctica y experimentación son claves en este camino de aprendizaje continuo sobre estructuras de datos y algoritmos. ¡Los alentamos a seguir explorando y perfeccionando sus habilidades en programación!