Software-Entwurfsmuster

Maximizer

 aufwärts

Problem

Oft kommt es vor, dass in einer Menge von Objekten ein maximales Objekt gesucht ist. Beispiels­weise ist unter allen erlaubten Spielzügen der bestmögliche Spielzug gesucht.

Ein ent­sprechendes Verfahren durchläuft mit einem Iterator alle erlaubten Spielzüge, wertet diese mit einer Bewertungs­funktion evaluate aus und merkt sich jeweils den dabei bisher gefundenen maximalen Wert maxval und den dazu­gehörigen besten Spielzug bestmove.

Die landläufige Inplementation dieses Verfahrens ist folgende:

public Move findMove()
{
    double val, maxval=Double.NEGATIVE_INFINITY;
    Move move, bestmove=null;
    Iterator it=new MoveIterator();
    while (it.hasNext())
    {
        move=(Move)it.next();
        val=evaluate(move);
        if (val>maxval)
        {
            maxval=val;
            bestmove=move;
        }
    }
    return bestmove;
}

 

Klasse Maximizer

Mithilfe einer Klasse Maximizer ist es möglich, eine solche Suche nach dem maximalen Objekt auszulagern und wieder­verwendbar zu machen.

Ein Maximizer hat die Methoden

public void add(double v, Object x)

public double getMaxVal()

public Object getMaxObj()

Mit add wird ein Paar (Zahlenwert, Objekt) eingegeben. Der Maximizer merkt sich stets den eingegebenen größten Zahlenwert und das dazugehörige Objekt. Nach mehreren solcher add-Vorgänge liefert getMaxVal diesen größten Zahlenwert und getMaxObj das dazugehörige Objekt.

 

Unter Verwendung des Maximizers vereinfacht sich das obige Programm dann wie folgt.

public Move findMove()
{
    Move move;
    Iterator it=new MoveIterator();
    Maximizer max=new Maximizer();
    while (it.hasNext())
    {
        move=(Move)it.next();
        max.add(evaluate(move), move);
    }
    return (Move)max.getMaxObj();
}

 

Der Vorteil einer solchen Lösung mit einem Maximizer besteht darin, dass der Maximizer

ist.

 

Das Gegenstück zu einem Maximizer ist der Minimizer. Es ist sinnvoll, Maximizer und Minimizer in einem MiniMaximizer zu kombinieren, so dass entweder das Maximum oder das Minimum oder gleichzeitig beides gesucht werden kann.

Ent­sprechende Implementierungen in unter­schiedlichen Programmier­sprachen finden sich unter MiniMaximizer.

 

Weiter mit:  [Maximizer mit Typ-Parameter]   [Iterator]   oder   up

 

homeH.W. Lang   Hochschule Flensburg   lang@hs-flensburg.de   Impressum   ©   Created: 05.11.2006   Updated: 20.06.2016
Valid HTML 4.01 Transitional

Hochschule Flensburg
Campus Flensburg

Informatik in Flensburg studieren...

 

Neu gestaltetes Studienangebot:

Bachelor-Studiengang
Angewandte Informatik

mit Schwerpunkten auf den Themen Software, Web, Mobile, Security und Usability.

Ihr Abschluss
nach 7 Semestern:
Bachelor of Science

 

Ebenfalls ganz neu:

Master-Studiengang
Angewandte Informatik

Ein projektorientiertes Studium auf höchstem Niveau mit den Schwerpunkten Internet-Sicherheit, Mobile Computing und Human-Computer Interaction.

Ihr Abschluss
nach 3 Semestern:
Master of Science

 

Weitere Informatik-Studienangebote an der Hochschule Flensburg:

Medieninformatik

Wirtschaftsinformatik