Algorithms

1. Self-Assembly and Self-Organization in Complex Systems

Self-assembly is the fundamental process that creates the specific conditions under which atoms, molecules, or even galaxies spontaneously arrange themselves into a final entity (molecule, drug, universe, etc). On the other hand, self-organization is a process in which the components (or state) of a system increase in complexity without external intervention. In some cases, self-organizing systems could exhibit emergent behaviour. The aim of this project is use a range of algorithmic techniques to study and gain insight into the processes of self-assembly and self-organization for a wide range of systems.

2. Computing By Using Membrane Models

The basic operations on membranes, implemented by a variety of molecular mechanisms, are local fusion (two patches merging) and local fission (one patch splitting in two). In two dimensions at the local scale of membrane patches, fusion and fission become a single operation, a switch. A switch is a fusion when it decreases the number of whole membranes, and is considered fission when it increases such number. Membrane machines are very unusual computational models and they exhibit certain properties that qualify them for the execution of ‘real’ algorithms. This project involves the study of these models to explore their potential for the execution of different classes of algorithms.

 

3. The Mapping of Optimization Algorithms on Different Families of Computer Architectures

 

This project involves the mapping of different classes of optimization algorithms on a variety of computer architectures (e.g. multicores, GPUs, FPGAs). For example, developing and analyzing specialized parallel algorithms (GAs, ACO, PSO, etc) for a cluster of GPUs. Then compare them against traditional clusters and characterize their algorithmic and run time behaviour, as well as their efficiency/efficacy in solving standard benchmarks and one target problem (telecoms or other domains). Another example is the development of algorithms to run on multicore computers (threads utilization) and comparison in efficiency and different other features with traditional cluster parallel algorithms. Development of an optimization software library targeted to optimization on multicore computers.


 

 

Back to the School Home Page
 


Last changed: April 14, 2006