Búscalo aquí:

Top 500 de Instituciones de Educación Superior con presencia en la Web


El sitio webometrics tiene una lista en el que presenta un ranking de las Instituciones de Educación Superior donde se mide la actividad y visibilidad en la web. Este ranking mantiene información desde el 2004 y es un buen indicador del impacto y prestigio de las universidades.


En el Top 500 de Webometrics en 2009 encontramos a 13 instituciones de Latinoamérica: 9 brasileñas, 2 mexicanas, 1 chilena y 1 argentina, de 16,000 instituciones evaluadas en donde se mide el número de páginas recuperadas por los buscadores, la visibilidad en base a los enlaces únicos recibidos, las publicaciones electrónicas disponibles y los resultados brindados por Google Scholar.

En este Top 500 podemos observar que el MIT (Massachusetts Institute of Technology) ocupa nuevamente el primer lugar de la clasificación mundial, la UNAM (México) sube 7 posiciones a la cabeza de Latinoamérica y en esta lista Brasil se impone con 9 instituciones encabezadas por la Universidad de São Paulo.

A continuación la lista de las 13 instituciones de Latinoamérica que figuran en el Top 500:
Como se puede apreciar, no existe ninguna Universidad u otra Institución de Educación superior peruana que se encuentre en el top 500. Sin dudas, una prueba más que aún estamos aportando muy poco al mundo, un motivo más para trabajar más en ello



Quieres leer más post como éste???...suscribete aquí!!!


Las 10 Aplicaciones de Modelado 3D de Software Libre

La creación de modelos tridimensionales (modelos 3D) no es una tarea sencilla y el uso de software propietario puede resultar muy costoso en términos monetarios. Es por eso que resulta interesante conocer las aplicaciones de software libre para el modelado 3Dexistentes. En este post se presentará un resumen de las 10 aplicaciones de software libre para el modelado 3D más populares por los excelentes resultados que se logra con ellos, algunas de las cuales incluso son open source.

Arbol rojinegro [código]

Un árbol rojinegro es una de las estructuras de datos de tipo diccionario más usadas. Es un árbol binario balanceado que asegura que sus operaciones tengan una complejidad de O(log N) en el peor de los casos. En este post comparto el código fuente escrito en C++ del árbol rojinegro.

Ubuntu disminuye el tiempo de vida de las laptops


Aunque parezca mentira o un chiste de mal gusto, el tener instalado algún sistema operativo de Linux, en particular Ubuntu, trae consecuencias adversas para las laptops, ya que disminuye drásticamente el tiempo de vida util del disco duro de las mismas.


El tiempo de vida util del disco duro de las laptops se verá disminuido drásticamente al usar sistemas operativos Linux, en especial Ubuntu, esto debido a que la mayoría de laptops son diseñadas para soportar y usar el sistema operativo privativo Windows, el problema radica en patrones de acceso distintos presentes en Linux comparados con Windows, lo cual hace que a pesar que el acceso en Linux sea más eficiente, el acceso al mismo para operaciones de load y unload en las laptops es mucho más persistente.

Mayor información la pueden encontrar en el foro del mismo Ubuntu. No se han encontrado referencias acerca de que si estos problemas han sido superados en la última versión de Ubuntu.


Quieres leer más post como éste???...suscribete aquí!!!


Mapa de ciencia en el mundo


Las producciones científicas desarrolladas por todas las universidades y centros de investigación científicos juegan un papel importante para el mundo, el cual se ve reflejado en el continuo y acelerado avance de la tecnología que hace nuestra vida más cofortable día a día. Pero, ¿Dónde se produce mayormente este avance científico?


En el sitio web de http://www.worldmapper.org se encuentra disponible un mapa en el que se muestra la proporción de papers publicados desde 2001 por autores de los diferentes países del mundo que realizan investigación científica.

Estos papers cubren las áreas de: física, biología, química, matemática, medicina clínica, investigación en biomedicina, ingeniería, tecnología y ciencias de la tierra y el espacio.

Algo que resalta en el mapa es el número de artículos científicos publicados por investigadores en los Estados Unidos, el cual es de tres veces más que el número de papers publicados por la segunda mayor población de publicación, Japón. Así mismo, se puede apreciar que en Sudamérica y América del Centro la producción científica es tan mínima que a las justas aparecen en el mapa.


Sin duda la producción científica en Latinoamérica es algo preocupante, lo que amedita una pronta solución, tal vez la frase de David Dorling nos permita darnos cuenta acerca del porqué de nuestra realidad en investigación científica: "La investigación científica es el producto, tanto de la sociedad que permite su desarrollo como de los individuos que son sus autores".

Saludos,



Quieres leer más post como éste???...suscribete aquí!!!

El Primer Blog Impreso

Acaba de suceder un fenómeno totalmente inverso a lo que se nos tenía acostumbrado en los últimos tiempos. Se nos había hecho costumbre ver como medios ajenos a la internet pasaban al ámbito web, como la radio, la prensa escrita, la televisión, entre otros; sin embargo, ahora la historia se revierte. Acaba de salir el primer número del primer blog impreso en los Estados Unidos.


The Printed Blog, salió en Chicago y San Francisco y es una iniciativa de Joshua Karp. Se trata de un medio impreso gratuito que se nutrirá de contenidos de 300 blogs con los que firmó acuerdos para poder reproducir sus publicaciones a cambio de una participación en los ingresos publicitarios. El nuevo medio será por ahora semanal, pero su creador aspira a que salga diariamente y que incluso tenga varias ediciones por día.

Además según el creador de esta iniciativa, serán los mismos lectores quienes recomienden que blogs sean los que el periódico incluya. La nueva publicación cuenta también con fotos de los internautas, mantiene el formato de una sola columna como el de un blog y tendrá, por el momento, cuatro páginas.

The Printed Blog se lanzaría en Nueva York el mes que viene. La intención de Karp es que, a largo plazo, cada gran ciudad norteamericana tenga su propia edición. El concepto publicitario online será acogido en el nuevo medio: la idea es que los anunciantes puedan también acceder a la web y comprar directamente su espacio publicitario. La primera versión impresa la pueden ver desde AQUI.

Sin duda un concepto novedoso y revolucionario que le dará vida a los medios escritos que de alguna manera venían decayendo en popularidad debido a su digitalización. Y es que no hay mejor sensación que el de informarse por medio de un periódico en nuestras propias manos.


Quieres leer más post como éste???...suscribete aquí!!!


Algoritmo de Graham [código]

El algoritmo de Graham es uno de los mas conocidos en lo que respecta a los algoritmos para encontrar la cerradura convexa de una nube de puntos. Fue desarrollado a finales de la década de los 60, cuando en los laboratorios Bell se necesitaba calcular la cerradura convexa de una cantidad enorme de puntos (10000 a más), y con uno de los algoritmos de por entonces, de O(N^2) resultaba demasiado lento. Entonces Graham lo solucionó con el presente algoritmo.

Listas en Scheme [código]

El uso de listas en la programación funcional es intrínseco y por lo tanto, continuamente usado, a continuación dejo unos ejemplos básicos en código de Scheme del uso de listas enlazadas mediante la funcion list.


  1. ;Escuela de Informatica - UNT
  2. ;Valverde Rebaza Jorge Carlos
  3. ;uso y aplicaciones de listas
  4. (define Lista1 (list 1 2 3 4 5 6 7 8 9))
  5. (define Lista2 (list 10 11 12 53 14 15 86 17 18 19))
  6. ;devuelve la cola de una lista
  7. (define (sn lista) (cdr lista))
  8. ;devuelve la longitud de una lista
  9. (define (longitud lista)
  10. (length lista)
  11. )
  12. ;devuelve el elemento de posicion k
  13. (define (nesimo lista k)
  14. (list-ref lista k)
  15. )
  16. ;devuelve la lista original en orden invertido
  17. (define (inversa lista)
  18. (reverse lista)
  19. )
  20. ;concatena dos listas
  21. (define (unir l1 l2)
  22. (append l1 l2)
  23. )
  24. ;sumatoria de los elementos de la lista
  25. (define (sumar lista)
  26. (apply + lista)
  27. )
  28. ;define la media de la sumatoria de los elementos de la lista
  29. (define (media lista)
  30. (/(apply + lista) 2)
  31. )
  32. ;devueleve el maximo elemento de una lista
  33. (define (maximum lista)
  34. (if (null? lista) '()
  35. (if (null? (cdr lista)) (car lista)
  36. (if (>= (car lista) (maximum(cdr lista)))
  37. (car lista) (maximum (cdr lista)))
  38. )
  39. )
  40. )




Espero les sea de utilidad, saludos.




Quieres leer más post como éste???...suscribete aquí!!!

Se logra teletransportar información entre dos átomos

Lo que parecía un sueño difícil de alcanzar, lograr la teletransportación de la información entre dos átomos separados por una determinada distancia, a sido logrado por científicos del equipo de investigación Joint Quantum Institute de la Universidad de Maryland y de la Universidad de Michigan en Estados Unidos. Este logro, conseguido gracias al fenómeno del entrelazamiento cuántico, es un paso muy significativo para lograr el procesamiento de la información cuántica, es decir, que el desarrollo de ordenadores cuánticos va fortaleciendo sus cimientos y cada día se hace mucho más factible su realización.

Aunque la teletransortación de la información se realizó entre dos átomos separados por una distancia de un metro, el simple hecho de haber logrado la tan ansiada teletransportación ya es un paso significativo hacia el procesamiento cuántico de información, esto es, hacia la creación de los ansiados ordenadores cuánticos, informa el profesor Christopher Monroe, director de la investigación, en un comunicado oficial.

Siendo la teletransportación una de las formas de trasnporte más misteriosa y vista mayormente en películas de ciencia ficción, ¿Cómo es que so logro teletransportar información?...

Los investigadores explican: En la teletransportación, la información cuántica, como el espín de una partícula o la polarización de un fotón, es transferida de un lugar a otro, sin viajar a través de ningún medio físico. Este tipo de teletransportación se había logrado anteriormente con fotones a través de muy largas distancias, con fotones y conjuntos de átomos, y con dos átomos cercanos, con la acción intermediaria de un tercer átomo.

Pero ninguno de estos logros, había proporcionado un medio útil de almacenamiento y gestión de la información cuántica a larga distancia. Sin embargo , ahora se ha conseguido teletransportar con éxito un estado cuántico directamente de un átomo a otro, a través de una distancia considerable.

La teletransportación funciona gracias a un fenómeno sorprendente que se denomina entrelazamiento cuántico, y que sólo se da a escala atómica y subatómica. El fenómeno consiste en que, una vez que dos objetos (cuánticos) son llevados a un estado entrelazado, sus propiedades permanecen íntimamente relacionadas. Aunque estas propiedades son intrínsecamente desconocidas hasta que no se hace una medición, dicha medición en uno de los objetos determina de forma instantánea las características del otro, cualquiera que sea la distancia a la que se encuentre éste del primero.

Los científicos enlazaron los estados cuánticos de dos átomos de iterbio, de manera que la información de uno de ellos pudiera ser teletransportada al otro. Después, cada ión fue aislado en una cámara y quedó suspendido dentro de una cápsula invisible formada por campos electromagnéticos, y rodeados por electrodos metálicos.

Los científicos identificaron en ambos iones dos estados diferentes: de alta o baja energía dos "bits" diferenciables que les permitirían distinguir entre la situación en que se encontraban uno y otro átomo. Después, los iones fueron excitados durante un picosegundo (la billonésima parte de un segundo) con un láser para que emitieran un único fotón. Cada fotón emitido por estas excitaciones fue capturado y registrado por herramientas especializadas.

Así, los investigadores pudieron comprobar que, efectivamente, cualquier efecto producido en el primer átomo podía ser registrado en el segundo, a pesar de que las condiciones en las cápsulas electromagnéticas de cada uno de ellos fueran diferentes.

La posibilidad de esta transferencia de información es clave para el desarrollo de futuros sistemas de información cuánticos, dado que éstos requieren tener amplia capacidad de almacenamiento en su memoria tanto en el extremo emisor como en el receptor de las transmisiones.

A la vez, Christopher Monroe, señala también que el método de teletransportación, propuesto por su equipo de investigación, puede combinarse con las operaciones de bit cuánticos para crear un componente clave necesario para la computación cuántica. En una computadora cuántica la información se gestiona y desarrolla por medio de qubits, a diferencia de las computadores actuales, en las que esta labor la realizan los bits o dígitos binarios.

La física cuántica permite a partículas, como un átomo, un electrón o un fotón, estar en dos sitios a la vez gracias al fenómeno conocido como superposición cuántica, lo que quiere decir que los qubits son capaces de representar el 1 y el 0 al mismo tiempo, permitiendo hacer cálculos mucho más complejos, es decir, que un computador cuántico podría realizar trabajos de encriptación, búsquedas en grandes bases de datos, predicción climática, entre otras que requieren de una amplia capacidad de procesamiento, a una velocidad considerablemente mayor a la es realizada actualmente por las computadoras más potentes.

Christopher Monroe añade, los átomos suponen un valioso medio de almacenaje de memoria cuántica de larga duración. Un repetidor cuántico de átomos, en lugar de sólo fotones, permitirá comunicar información cuántica a través de distancias mucho más largas que las conseguidas por un repetidor cuántico sólo de fotones.

Con este nuevo y esperanzador logro de la ciencia, sin lugar a dudas abre nuevas puertas y hace que veamos de manera más optimista la llegada de un computador cuántico en un futuro no muy lejano, incluso en algunos sites hasta se comenta de la llegada del Internet cuántico el cual, ya nos hace tener una idea de que también superará ampliamente a la actual red de redes.


Quieres leer más post como éste???...suscribete aquí!!!




Stallman propone ingeniería inversa para firmware binarios


Richard Stallman ha propuesto hacer ingeniería inversa con los firmware binarios identificados por el proyecto linux-libre y que esten distribuidos con licencias libres (para no tener problemas legales).


La propuesta realizada por el padre del Software Libre consiste en listar dichos firmware binarios por orden de prioridad (para dispositivos importantes, por ejemplo) y trabajar en ingeniería inversa con ellos. Es una iniciativa que por ahora ha tenido buena acogida [1].

Un firmware es un pedazo de código grabado en memoria no volátil que establece la lógica de más bajo nivel para controlar los circuitos electrónicos de cualquier dispositivo.



Quieres leer más post como éste???...suscribete aquí!!!



Esquema de la Base de Datos de Wikipedia


MediaWiki es un paquete de software libre escrito originalmente para Wikipedia y que actualmente es utilizado por muchos wikis. Y como cualquiera que haya usado un wiki se debe estar imaginando que el esquema de su Base de Datos es complejo y hasta tal vez demasiado "enmarañado".


Y puede que lo de complejo sea cierto, pero por el contrario, como se observa en la imagen inferior, es muy ordenado y se puede observar correctamente las clases que la componen y las relaciones existentes entre cada una de ellas.



Todo apunta que el esquema de la Base de Datos fue creado uando la herramienta MySQL Workbench


Quieres leer más post como éste???...suscribete aquí!!!


Aumenta demanda de software empresarial en Trujillo

A pesar de la crisis mundial que afecta la economía de todos, uno de los productos más requeridos y cuya demanda aumentará a pesar de todo obstáculo que dicha crisis represente, es el software y nuestra ciudad de Trujillo no será la excepción.


La venta de software empresarial alcanzaría los 12 millones de dólares en el primer trimestre de este año afirmó hoy la consultora peruana de sistemas, Ofisis. Esto impulsado por la demanda de sectores como comercio, construcción, industria y servicios que a la fecha lideran las compras de este tipo de productos, tanto en Lima como en provincias, precisó el gerente comercial de la empresa, Alberto Muñoz, quien sostuvo que en los próximos meses se espera un crecimiento moderado en las ventas de software empresarial, puesto que los inversionistas están interesados en impulsar su productividad y mejorar los márgenes de ganancia [tomado de Trujillo Semanal].

De alguna manera esto es tomado como una buena noticia desde el punto de vista que las empresas locales lograrán hacer crecer y mejorar sus sistemas de información y con ello brindar un mejor servicio y maximizar sus propias ganancias, sin embargo, los principales beneficiarios de todo esto serán los proveedores de dicho software, que por lo general son las grandes compañías de desarrollo de software. Desde mi punto de vista se esta dejando de lado al productor local de software, es decir, a la inmensa cantidad de profesionales y empresas locales productoras de software que tienen la capacidad de crear software a medida de las necesidades de dichas empresas.

En todas partes del Perú se forman porfesionales capaces de tomar esta responsabilidad y desarrollar eficientemente este trabajo, entonces hace falta una política propulsora que haga saber a la localidad y al mundo que el Perú también produce software de calidad y no solamente es un mero consumidor.



Quieres leer más post como éste???...suscribete aquí!!!





Nueva técnica de phishing arremete el internet


El phishing es una forma de estafa por Internet, su objetivo fundamental es el obtener de los usuarios sus datos, claves, cuentas bancarias, etc. La forma de operar de esta técnica es bastante sencilla y consiste en suplantar la imagen corporativa de una entidad pública haciéndonos creer que le estamos dando nuestros datos al sitio oficial.

Aunque parezca algo poco creíble, mucha gente a caído, cae y caerá en esta forma de estafa por internet y quizás más ahora, con la aparición de una nueva modalidad de phishing identificada por la empresa de seguridad informática Trusteer, esta nueva forma de estafa está diseñada para engañar a los usuarios a la hora de entregar información confidencial tras haber iniciado su sesión en algún sitio web que el usuario considera ser el portal web original. Por ejemplo, suponga que quiere comprobar si se ha realizado un ingreso en su cuenta corriente, entonces ingresa a la página del banco inserta las correspondientes claves pero, de golpe, la página envía un pop-up que le advierte que su sesión ha finalizado e insta al usuario a volver a introducir sus datos bancarios, si lo hacemos, en ese preciso momento, le acabamos de facilitar nuestros datos al hacker.

La novedad de este nuevo phising, se muestra en un informe del grupo de investigación de Trusteer, consiste en que el uso de los buscadores para comprobar si un usuario está o no conectado a un determinado sitio web. La vulnerabilidad proviene de una función de JavaScript de los principales navegadores: Explorer, Firefox, Safari y Chrome. Cuando esta función se emplea, deja una huella temporal en el ordenador y cualquier otro sitio web puede identificarla. Precisamente, los sitios web de las redes sociales, de juegos, juegos de azar, instituciones financieras, etcétera utilizan esta función.

Con la intención de proteger a los usuarios, en dicho informe se hacen una serie de recomendaciones. La primera es implementar las herramientas de seguridad de nuestro navegador (y no dejar las que vienen por defecto). La segunda es salir de la banca on-line, de otras aplicaciones y de nuestras cuentas, antes de navegar por otros sitios web. (cerrar sesión). La tercera, y básica, es la sospechar de todos los pop ups que nos aparezcan si no hemos hecho clic en un determinado hipervínculo.



Quieres leer más post como éste???...suscribete aquí!!!





El Futbol en videojuegos: FIFA 2009 y Pro Evolution 2009

El año casi recién empezó y las grandes compañias de videojuegos ya sacarón al mercado las nuevas versiones de sus productos ya conocidos y ampliamente populares: FIFA 2009 y Pro Evolution Soccer 2009 que de seguro nos invadirán por mucho tiempo más.


Si bien es cierto que los videojuegos de futbol tienen un gran mercado, nada es suficiente para el gusto del gammer. Es por eso que las grandes compañías verdaderamente se han preocupado por hacernos llegar productos de calidad.

Ese es el caso de FIFA 2009 que este año verdaderamente ha sorprendido a todos por la evolución que ha tenido, en comparación con su versión anterior. El modo de juego se desenvuelve en un entrono tridimensional totalmente realista, sin descuidar los detalles físico más minimos, como por ejemplo cuando dos jugadores chocan entre ellos, las reacciones y las caídas estos tengan dependerán de las diferencias físicas de cada uno, la velocidad con la que venían, etc. La calidad gráfica es impecable y no sería pecado que cualquier humano confunda un juego de estos con encuentros de una transmisión real.

En contraparte Pro Evolution Soccer 2009 se caracteriza por su sencillo modo de juego y buenos gráficos. Sin embargo, el 'gameplay' es idéntico al de su antigua versión. Quizás la principal novedad es el modo de juego Become a Legend, en el cual se toma el control de un único jugador con el objetivo de que éste, partido a partido, mejore su calidad de juego y desenvolvimiento en la cancha y pase de ser un novato suplente a un ídolo del futbol.

Entonces, hay suficiente material para que cada uno escoja el que mejor le parezca, sin lugar a dudas que la teconología en videojuegos sigue mejorando.





Quieres leer más post como éste???...suscribete aquí!!!



¿Qué son las Redes de Petri?


Las redes de Petri son una herramienta muy importante en el estudio, especificamente en la evaluación, de sistemas, los cuales son modelados formalmente (representación matemática) a través de las redes de Petri.


De esta manera, un sistema modelado por una red de Petri, tendrá la "facilidad" de mostrar información importante de su estructura y dinámica. Con esta información formalmente modelada se puede posteriormente evaluar el sistema, encontrar errores y/o sugerir mejoras o cambios.

Desde aquí pueden encontrar más información acerca de la definición formal de una red de Petri así como también los pasos necesarios para modelar un sistema con una red de Petri.




Quieres leer más post como éste???...suscribete aquí!!!



Torres de Hanoi en Prolog [código]


El problema de las torres de hanoi es juego matemático inventado en 1883 por el matemático francés Éduard Lucas. En esta entrada comparto el código recursivo escrito en Prolog para resolver el problema de las torres de hanoi para N discos.

Heap Binomial [código]


Una de las estructuras de datos muy usadas por su eficiencia en la construcción de colas de prioridad es la estructura de datos llamada Heap Binomial, la cual tiene el mismo objetivo que el Heap Binario pero cuya implementación es un tanto más compleja. En este post comparto el código fuente escrito en C++ del Heap Binomial.

Diccionario Web para entender a los sordos


Científicos en Computación de la Universidad de Boston (Estados Unidos) están desarrollando un diccionario muy peculiar el cual tiene por tarea, traducir cualquier gesto (lenguaje de mimicas usado por las personas sordas) en palabras.

Algoritmo del Par más Próximo [código]


En Geometria Computacional, uno de los algoritmos de gran uso y aplicación es el algoritmo del par más proximo, es decir, dada una nube de puntos dispersos, se debe encontrar la menor distancia de separación entre un par de ellos, por supuesto que el algoritmo debe ser óptimo y tener una complejidad es 'n logarítmica' (O(n log n) ), puesto que de no ser así, ante una cantidad grande puntos podemos encontrar grandes complicaciones durante el procesamiento.


El código en Java de la implementación del algoritmo del par más proximo (closest pair), es el siguiente:



  1. public static double parProximo(ListaEnlazada S, int i, int j)

  2. {

  3. P = S;

  4. return parMasProximo(i,j);

  5. }

  6. private static double parMasProximo(int i, int j)

  7. {

  8. double delta = 0;

  9. if((j-i)<=2) //si a lo más existen únicamente 2 o 3 puntos

  10. {

  11. //calcular la distancia minima entre cada par de puntos

  12. if((j-i)==1) //si existen 2 puntos

  13. delta = Auxiliar.distancia(P.getPunto(i), P.getPunto(j));

  14. else if((j-i)==2)//si existen 3 puntos

  15. delta = Auxiliar.distancia(P.getPunto(i),
    P.getPunto(i+1), P.getPunto(j));

  16. Auxiliar.ordenarPorY(P,i,j);

  17. return delta;

  18. }

  19. //sea l una recta que pasa por un punto con indice k

  20. int k = (int) Math.floor((i+j)/2);

  21. int lx = P.getCoordX(k);//coordenada X del punto ke pasa por la posicion n/2

  22. //Dividir en dos subconjuntos

  23. double delta_i = parMasProximo(i,k);

  24. double delta_d = parMasProximo(k+1,j);

  25. //obtenemos el delta minimo

  26. delta = Auxiliar.minimo(delta_i,delta_d);

  27. if(delta==0) //ya no habra minimo mas minimo pz

  28. return delta;

  29. //mezclamos

  30. Auxiliar.mezclar(P,i,k,j);

  31. //Sea V un conjunto de puntos

  32. ListaEnlazada V = new ListaEnlazada();

  33. for(int m=i; m<=j; m++)

  34. {

  35. if((P.getCoordX(m) > (lx-delta)) && (P.getCoordX(m) < (lx+delta)))

  36. V.insertar(P.getPunto(m));

  37. }

  38. double distaux;

  39. for(int m=0; m<V.getSize(); m++)

  40. {

  41. for(int n=m+1; n<Auxiliar.minimo(V.getSize()-1,m+7); n++)

  42. {

  43. distaux =Auxiliar.distancia(V.getPunto(m),
    V.getPunto(n));

  44. if(distaux < delta)

  45. delta = distaux;

  46. }

  47. }

  48. V = null;

  49. return delta;

  50. }

En el archivo Auxiliar.java se encuentran funciones como:



  1. //distancia entre dos puntos

  2. public static double distancia(Punto2D p1, Punto2D p2)

  3. {

  4. double v1 = (Math.pow((p2.getX()-p1.getX()),2));

  5. double v2 = (Math.pow((p2.getY()-p1.getY()),2));

  6. return Math.sqrt(v2+v1);

  7. }


  8. //distancia minima entre 3 puntos

  9. public static double distancia(Punto2D p1, Punto2D p2, Punto2D p3)

  10. {

  11. double distancia = 0;

  12. double [] d = new double[3];

  13. d[0] = Auxiliar.distancia(p1, p2);

  14. d[1] = Auxiliar.distancia(p1,p3);

  15. d[2] = Auxiliar.distancia(p2,p3)

  16. if(d[0] < d[1])

  17. distancia = d[0];

  18. else

  19. distancia = d[1];

  20. if(distancia>d[2])

  21. distancia = d[2];

  22. return distancia;

  23. }


  24. public static void ordenarPorY(ListaEnlazada P,int i,int j)

  25. {

  26. A = P;

  27. B = new ListaEnlazada(A.getSize());

  28. mergeSortY(i,j);

  29. }


  30. public static void mergeSortY(int lo,int hi)

  31. {

  32. if(lo <hi)

  33. {

  34. int m = (lo+hi)/2;

  35. mergeSortY(lo,m);

  36. mergeSortY((m+1),hi);

  37. mezclarY(lo,m,hi);

  38. }

  39. }

  40. //Bitonic variant

  41. private static void mezclarY(int lo, int m, int hi)

  42. {

  43. int i=lo, j=hi, k=lo;

  44. //copiamos la primera mitad en el array auxiliar B

  45. while(i<=m)

  46. B.insertar((Punto2D)A.getPunto(i++),k++);

  47. //copiamos la segunda mitad al array auxiliar B, pero en orden inverso

  48. while(j>m)

  49. B.insertar((Punto2D)A.getPunto(j--),k++);

  50. i=lo; j=hi; k=lo;

  51. //ordenamos

  52. while(i<=j)

  53. {

  54. if(B.getCoordY(i)getCoordY(j)) //si es menor

  55. A.insertar((Punto2D)B.getPunto(i++),k++);

  56. else

  57. {

  58. if(B.getCoordY(i)==B.getCoordY(j))

  59. {

  60. if(B.getCoordX(i)getCoordX(j))

  61. A.insertar((Punto2D)B.getPunto(i++),k++);

  62. else

  63. A.insertar((Punto2D)B.getPunto(j--),k++);

  64. }

  65. else//si es mayor

  66. A.insertar((Punto2D)B.getPunto(j--),k++);

  67. }

  68. }

  69. }


  70. //minimo de dos numeros

  71. public static double minimo(double a, double b)

  72. {

  73. if(a < b)

  74. return a;

  75. return b;

  76. }



  77. //función mezcla, similar a la del merge. Se tiene en cuenta la coordenada Y de

  78. //los puntos,

  79. public static void mezclar(ListaEnlazada A, int p, int q, int r)

  80. {

  81. int n1 = q-p+1;

  82. int n2 = r-q;

  83. ListaEnlazada L = new ListaEnlazada();

  84. ListaEnlazada R = new ListaEnlazada();

  85. int i=0,j=0,k=0;

  86. for(i=0; i<n1; i++ )

  87. L.insertar((Punto2D)A.getPunto(p+i));

  88. for(j=0; j<n2; j++)

  89. R.insertar((Punto2D)A.getPunto(q+j+1));

  90. Punto2D poin = new Punto2D(Integer.MAX_VALUE, Integer.MAX_VALUE);

  91. R.insertar(poin);

  92. L.insertar(poin);

  93. poin = null;

  94. i=0;j=0;

  95. for(k=p; k<=r; k++)

  96. {

  97. if(L.getCoordY(i)<=R.getCoordY(j))

  98. A.insertar((Punto2D)L.getPunto(i++),k);

  99. else

  100. A.insertar((Punto2D)R.getPunto(j++),k);

  101. }

  102. R = null;

  103. L = null;

  104. }

La estructura ListaEnlazada mantiene una lista de elementos Punto2D los cuales a su vez tienen como atributos principales coordenas X y Y pues representan a un punto en el espacio bidimensional.

Espero les sirva, saludos :D
Quieres leer más post como éste???...suscribete aquí!!!

Software para el embellecimiento de rostros

Un software que revolucionará. Cientificos en Computación de la Universidad de Tel-Aviv (Israel) presentaron en el último SIGGRAPH 2008 (Conferencia Top en Computación Gráfica) el paper titulado Data-Driven Enhancement of Facial Attractiveness el cual presenta un algoritmo que realiza la modificación automática de imágenes de rostros de personas logrando embellecerlos.

Fractales 3D con Open Source

Un fractal es un objeto semi-geometrico que se caracteriza por su forma irregular la cual se repite a diferentes escalas en sí mismo. Un fractal es definido computacionalmente como un algoritmo recursivo. En la naturaleza encontramos constantemente objetos fractales: las nubes, las montañas, el sistema circulatorio, las líneas costeras, etc. Esta representación es aproximada, pues las propiedades atribuidas a los objetos fractales ideales, como el detalle infinito, tienen límites en el mundo natural.

Lecturas de Ciencia de la Computación

En el sitio oficial de LectureFox se han publicado gran cantidad de articulos de Ciencia de la Computación , los cuales pueden ser descargados de manera gratuita. Estos artículos proceden de las bibliotecas de Universidades Americanas de gran renombre como la UC Berkeley, la Universidad de Harvard, la Universidad de Washington, el MIT, Carnegie Mellon, entre otras.


Los artículos son de los diversas temas de la Ciencia d ela Computación como Machine Structures, Understanding Computers and the Internet, Introduction to Computers, Computer Language Engineering, Introduction to Algorithms, The Structure and Interpretation of Computer Programs, entre muchos otros, encontrándose lecturas, audio e incluso videos, los cuales pueden ser descargados gratuitamente desde AQUI.

Espero les sea de gran utilidad, saludos.


Quieres leer más post como éste???...suscribete aquí!!!



Heap Binario [código]


En esta ocasión quiero compartir información acerca de estructuras de datos, explícitamente el código en C++ de algunas estructuras de datos que implemente. En este post comparto el código en C++ de la estructura Heap Binario llamado también Montículo.

Fragmentación y Asignación en una Base de Datos Distribuida

La implementación de Sistemas de Base de Datos Distribuidas (SBDD) es una alternativa interesante para el manejo de información de los diferentes rubros de las organizaciones.

La Base de Datos consiste en dos o más ficheros de datos almacenados en diferentes localidades de una red que pueden estar geográficamente separadas y conectadas por enlaces de comunicación. Cuando las bases de datos son distribuidas, diferentes usuarios tienen acceso sin interferir unos con otros. Sin embargo, el Sistema de Gestión de Bases de Datos Distribuidas (SGBBD) debe sincronizar periódicamente las bases de datos dispersas, para asegurar que todas tengan sus datos uniformes.

El acceso a los datos en los SBDD se realiza mediante los enlaces de comunicación que conformen la red en la que se encuentren los sitios que contengan alguna de las partes los datos. Un SBDD está formado por una colección de sitios, cada uno de los cuales opera un sistema de bases de datos para el procesamiento de las actividades que solo requieran datos locales. Los SGBDD están compuestos por varios SGBDs operando en sitios locales y que están conectados mediante la trasmisión de mensajes, transacciones, datos desde el sitio local hacia remostos y viceversa, etc.

En este informe se detallan los pasos a seguir para la implementación y puesta en marcha de un Sistema de Base de Datos Distribuida, tomando la Base de Datos de un staff de abogados se realizan las operaciones sobre las tablas de dicha BD para lograr la fragmentación y distribución de las tablas de dicha Base de Datos.

La Base de Datos consta de 7 tablas las cuales son fragmentadas las cuales son fragmentadas siguiendo el proceso de: especificar la Matriz Unificada de Acceso (MUA) y contando con una Matriz de Accesos (MA) se logra obtener la Matriz de Afinidad de Atributos (MAA) lográndose obtener los fragmentos de cada tabla. Con cada uno de los fragmentos obtenidos son relacionados con las consultas que se permitiran para de esta manera obtener la Matriz Unificada de Procesos (MUF), la Matriz de Afinidad de Fragmentos (MAF), y la Matriz de Afinidad de Fragmentos Agrupados (MAFA).

Luego para realizar la distribución de dichos fragmentos aplicamos el algoritmo de n-formas y generamos un esquema de agrupamiento para que finalmente mediante la asignación de cluster logremos asignar los diferentes fragmentos en los diversos nodos disponibles en la red.

El trabajo fue realizado por mi persona junto con Rulber Velásquez, Erik Gutierrez y Carito Segura, los resultados obtenidos son buenos lográndose atender correctamente las consultas realizadas desde diferentes nodos.



Quieres leer más post como éste???...suscribete aquí!!!

II Fast Workshop on Appied and Computational Mathematics

El 7 de enero del 2009 se realizará el II Fast Workshop on Appied And Computational Mathematics en el Auditorio Principal de la Escuela de Postgrado 4to.Piso, Ciudad Universitaria, Universidad Nacional de Trujillo.

Este evento es organizado por la Escuela de Postgrado de la Universidad Nacional Trujillo y auspiciado por la Sociedad Peruana de Matemática Aplicada y Computacional (SPMAC).


Este evento tiene por objetivo promover la actualización de conocimientos y difundir el avance de la matemática y sus aplicaciones en la región norte del Perú a través de participaciones de ponentes de diferentes latitudes del mundo, generando una interacción entre profesionales investigadores y estudiantes de doctorado de diferentes países con el nuestro.

Desde aqui pueden encontrar más información. Entree los temas de Matemática Computacional que se ven que estarán interesantes están:
  • Optimización de la Localización de Estaciones Base y asignación de la Frecuencia para una Red Celular de Telecomunicaciones basados en la Tecnología GMS - Martín Grados Marquina, PhD. Master en Ciencias de la Computación, UNT
  • Caos, Fractales y Biología - Ms. Jorge Horna Mercedes, UNT, Perú
  • Modelo y Algoritmo Heurística para la Localización y Ruteo de Vehículos - Mg. José Rodriguez Melquiades, UNT, Perú
  • Implementación de un escáner en 3D con ayuda del software de programación Labview - Ing. Henry Rojales Alfaro, Laboratorio de Ciencias, UPN, Perú
  • Aplicaciones wavelets en el mejoramiento de huellas dactilares y el pre-procesamiento de señales de audio - Msc. Ronald León Navarro, Pedro Linares Kcomt, Gilmer Méndez Villegas. UNT, Perú.
  • Método de los Elementos Finitos utilizando funciones de interpolación B-Splines en ecuaciones diferenciales ordinarias - Lic. Percy Angulo Vilca, Universidad Privada del Norte, Cajamarca, Perú

Entre otros. El evento es dirigido a estudiantes y profesionales en Matemática, Ingeniería y ciencias afines y el ingreso será GRATUITO; en el caso que alguno de los participantes requiera una certificación del mismo el pago será de S/. 10. (DIEZ NUEVOS SOLES), por costos de elaboración del certificado y otros gastos.




Quieres leer más post como éste???...suscribete aquí!!!



Interfaz en SWI Prolog usando XPCE

En esta ocasión vamos a ver como podemos colocar una interfaz sencilla en SWI Prolog usando la interfaz XPCE.

Para esto vamos a suponer el caso en el que queremos una interfaz que muestre un texto y dos botones: uno de Aceptar y otro de Cancelar, luego capturaremos la respuesta de acuerdo al boton que el usuario clickeará.

Related Posts Plugin for WordPress, Blogger...