
Algoritmos de búsqueda con retroceso para problemas multicriterio
La búsqueda en grafos, con multitud de aplicaciones en el mundo real, ha propiciado el diseño de una gran cantidad de algoritmos centrados en el procesamiento de un único objetivo, magnitud representativa del coste. Sin embargo, un tratamiento realista de estos problemas requiere en muchas ocasiones contemplar diferentes objetivos de modo simultáneo. Además, es habitual que estos objetivos sean antagónicos, de tal modo que la optimización de uno de ellos se traduzca en el empeoramiento de uno o varios de los objetivos restantes. Esto hace que el coste óptimo no sea único, sino que generalmente existe un conjunto de soluciones óptimas cuyas componentes de coste están compensadas entre sí.
Esta naturaleza multiobjetivo de los problemas provoca que el rendimiento de los algoritmos empeore de modo considerable, ya que al procesamiento habitual de los nodos generados durante el proceso de búsqueda hay que añadir el tratamiento de vectores de coste (de dimensión igual…
Estructuras de Datos
En un lenguaje de programación, un tipo de dato esta definido por el conjunto de valores que representa y por el conjunto de operaciones que se pueden realizar con dicho tipo de dato. Por otro lado, podemos decir que en la solución de un problema a ser procesado por un computador podemos encontrar dos grandes tipos de datos: datos simples y datos estructurados.
El término estructura de datos se utiliza para referirse a una forma de organizar un conjunto de datos que se relacionan entre si, sean estos simples o estructurados, con el objetivo de facilitar su manipulación y de operarlo como un todo. Por otro lado, tenemos el término Tipo de Dato Abstracto, o TDA, que es muy comunmente utilizado como equivalente al término estructura de datos para referirse justamente a un tipo de dato estructurado que representa un concepto a través de la definición de sus características (datos que lo conforman) y de sus operaciones (algoritmos que manipulan los datos que lo …
Algorithms
These are lecture notes that I wrote for algorithms classes at the University of Illinois at UrbanaChampaign, which I have taught on average once a year since January 1999.
With few exceptions, each of these “lecture notes” contains far too much material to cover in one lecture. In a typical 75-minute class period, I cover about 4 or 5 pages of material—a bit more if I’m teaching graduate students than undergraduates. Moreover, I can only cover at most two-thirds of these notes in any capacity in a single 15-week semester. Your mileage may vary! (Arguably, that means that as I continue to add material, the label “lecture notes” becomes less and less accurate.) The undergraduate and graduate classes I teach cover different but overlapping subsets of this material. The notes are numbered in roughly the order I use them in undergraduate classes, with more advanced material inserted near the more basic material it builds on.
The OpenIMAJ Tutorial
OpenIMAJ is a set of libraries and tools for multimedia content analysis and content generation. OpenIMAJ is very broad and contains everything from state-of-the-art computer vision (e.g. SIFT descriptors, salient region detection, face detection, etc.) and advanced data clustering, through to software that performs analysis on the content, layout and structure of webpages.
OpenIMAJ is primarily written in pure Java and, as such, is completely platform independent. The video capture and hardware libraries contain some native code but Linux (x86, x86_64 and ARM CPUs are supported), OSX and Windows are supported out of the box (under both 32 and 64 bit JVMs). It is possible to write programs that use the libraries in any JVM language that supports Java interoperability, such as Groovy, Jython, JRuby or Scala. OpenIMAJ can even be run on Android phones and tablets.
The OpenIMAJ software is structured into a number of modules. The modules can be used independently, so if, …
Learn to Code with Scratch
Coding doesn't just have to be about typing in line after line of gobbledygook. Created by the boffins at MIT, Scratch enables anyone – children and adults alike – to start programming within minutes, without any prior knowledge. You simply drag and drop various code blocks and link them together like jigsaw pieces to form logical scripts, unobstructed by confusing jargon and tricky syntax. Even better, Scratch is included as standard in the Raspbian operating system for the tiny Raspberry Pi computer. It can even be used with the Pi's GPIO pins to interact with electronic components and sensors.
In this book, we'll help you start coding with Scratch, guiding you step by step through the process of creating all sorts of projects: games, animations, quizzes, electronics circuits, and more. It'll be educational and also a lot of fun.
Cargando...