Primeras charlas Grupo PHP Argentina

Primeras Charlas del Grupo PHP

El día Sábado 6 de Marzo se realizara en el Hotel Las Naciones (Corrientes 818 1º piso – Buenos Aires, Argentina), se llevaran a cabo mas primeras charlas organizadas por el GrupoPHP argentina.

Agenda

09:30 – 09:40 | Acreditación

09:40 – 09:55 | Presentacion del Grupo PHP

10:00 – 10:40 | Introducción a POO / UML / PHP5 – Enrique Place

10:45 – 11:25 | Optimización y escalabilidad – Matías Montes

11:30 – 12:10 | Desarrollo de aplicaciones en Facebook – Matías Paterlini

12:10 – 12:30 | BREAK

12:35 – 13:15 | Introducción al Estándar de Codificación de Zend – Enrique Place

13:20 – 14:00 | Lithium, framework PHP 5.3 que pega como piña – Mariano Iglesias

14:05 – 14:45 | Cormo Framework ex ORMphp – Germán Peraferrer

14:50 – 15:00 | Mensaje de cierre

Para poder asistir es necesario registrarse en http://grupophp1.eventbrite.com, en donde recibirán un ticket con el cual podrán participar del evento.

Para obtener más información pueden visitar el sitio oficial del GrupoPHP argentina.

Yo ya estoy anotado. ¿Quién más se suma?

Update: Corregida la dirección del evento. Donde decía ”2º piso” ahora dice “1º piso”

Implementación de Búsqueda Binaria en PHP

La Búsqueda Binaria se utiliza para saber si un elemento se encuentra en una colección de datos, como podría ser un array, un vector o cualquier estructura de datos similar. Este algoritmo se basa en la premisa de que nuestra colección de datos se encuentra ordenada por la misma clave que buscamos.

La filosofía del algoritmo es la de Divide et impera, en el que la idea es separar el problema en partes mas pequeñas, descartando lo que no me sirve y quedándome con los rangos útiles. Los algoritmos de este tipo, que descargan la mitad de los datos en cada comparación, se dice que son de un orden de complejidad de:

log( N )

Donde N es la cantidad de elementos de nuestra colección de datos. Así podemos saber que en cada pasada, nos quedaran la mitad de los elementos, algo muy importante a al hora de optimizar recursos.

La implementación que presento a continuación, esta hecha de forma recursiva. La recursividad puede ser un tanto engañosa y colgar todo si no esta bien definida su condición de corte.

function binarySearch($key, $collection, $start, $end){
	// Selección de la posición del elemento central.
	$pivot = (int)($start + ($end - $start) / 2);
	// Condición de corte.
	if($start >= $end) return FALSE;
	if($collection[$pivot] > $key){
		return binarySearch($key, $collection, $start, $pivot - 1);
	} else if ($collection[$pivot] < $subscriber){
		return binarySearch($key, $collection, $pivot + 1, $end);
	} else {
		return TRUE;
	}
}

Simplemente eso, este mismo algoritmo podría ser optimizado o mejorado en cuanto a la inteligencia en el tratamiento de las variables $start y $end, haciendo que el mismo script calcule estos datos. Yo no los calculo por un tema de rendimiento.

Espero que pueda servirle a alguien en cualquier momento, desde ya esta todo el mundo invitado a utilizar este código. Y obviamente a dejar sus comentarios al respecto.