Jan Lemeire Kunnen computers samenwerken zonder intelligentie? Zoektocht naar het fundamentele probleem. Kunnen mensen wel samenwerken met computers? Om informatie te vinden op het internet kan je gebruik maken van een 'search engine' zoals Yahoo of Altavista, maar zelfs de meest eenvoudige zoekopdracht levert een immense hoeveelheid irrelevante informatie op! De computer begrijpt immers niet wat je zoekt, hij gaat enkel op zoek naar webpagina's waarin de opgegeven woorden voorkomen met behulp van een frekwentie-analyse. Deze oplossing is dus enkel een benadering. Dit voorbeeld illustreert goed de limieten van de huidige informaticatechnologie, we weten immers niet hoe we een computer concepten moeten doen begrijpen. We begrijpen niet wat 'begrijpen' precies inhoudt. We kunnen dan ook niet op een natuurlijke manier met een computer praten. Parallelle systemen. Onze onderzoeksgroep houdt zich bezig met parallelle systemen en wil computers een taak samen laten uitvoeren. Een parallel systeem kan gaan van één computer met meerdere processoren (rekenkrachten), over een lokaal netwerk tot zelfs het gehele internet. Op ons lab parallelliseren we onder andere grote mathematische berekeningen, netwerk- en verkeerssimulaties. Voor parallellisatie verdeel of partitioneer je de taak verdelen over de verschillende computers, dan voer je de subtaken uit op elke computer, waarbij de computers de tussenresultaten regelmatig met elkaar moeten synchroniseren. Hoe je dit doet, wordt bepaald door het parallellisatie-algoritme dat je uitdenkt (zie voorbeeld in kader). Combinatorische explosies! Parallellisatie doe je om een taak sneller uit te voeren. De moeilijkheid is echter dat de behaalde tijdswinst probleem- én systeemafhankelijk is, er bestaat geen algemene oplossing. We zeggen dat parallellisatie de hardware met het probleem moet 'matchen'. Voor elk type probleem en elk type systeem moet de informaticus dus een specifiek parallellisatie-algoritme bedenken, programmeren en optimaliseren. Voor n types van problemen en m types systemen moeten we dus n x m algoritmes ontwikkelen, wat leidt tot een combinatorische explosie. Het is immers een 'trade-off' tussen efficiëntie en algemeenheid: een algemene oplossing is nooit optimaal en omgekeerd bestaan efficiënte algoritmes enkel voor specifieke problemen. Voeg hier een aantal links toe gevonden op het web Parallelliseren van een genetisch algoritme. Om grote zoekproblemen op te lossen maakt de informatica ondermeer gebruik van genetische algoritmen. Deze zijn gebaseerd op de biologische evolutie. Om goede oplossingen te vinden muteren we een populatie van willekeurige individuën en selecteren we hieruit de beste individuën. Hoe kunnen we dit door meerdere computers tegelijkertijd uitvoeren? We kunnen de totale populatie over de computers verdelen (partitioneren) en vervolgens per computer laten evolueren, met een periodieke uitwisseling van individuën (synchroniseren). Zo bekomen we een methode/algoritme om het probleem te parallelliseren. We zien dat het algoritme probleemafhankelijk is, een ander probleem vergt immers een andere parallellisatie. Doctoraatsonderzoek Jan Lemeire VUB, faculteit TW, Parallelle Systemen. http://parallel.vub.ac.be