<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Minimix&#x2F;AlphaBeta fuer KI]]></title><description><![CDATA[<p>Hallo.<br />
Ich versuche derzeit eine KI mit Hilfe des Minimax-Algorithmus zu schreiben, aber kriege es noch nicht so wirklich hin...<br />
z.B. was stimmt hier nicht?</p>
<pre><code class="language-cpp">int Min(int depth)
{
	int neuerwert;
	int alterwert = 10000;

	ArrayVonZuegen arr;
	arr = SucheAlleMoeglichenZuege();

	for (size_t i=0; i&lt;arr.size(); i++)
	{
		SimuliereZug(arr[i]);

		if (depth == 0 || KeineZuegeMehrMoeglich())
			neuerwert = BewerteSpieleSituationVonDemDerAmZugIst();
		else
			neuerwert = Max(depth-1);

		MacheZugRueckgaengig();

		if (neuerwert&lt;alterwert)
			alterwert = neuerwert;
	}

	return alterwert;
}

int Max(int depth)
{
	int neuerwert;
	int alterwert = -10000;

	ArrayVonZuegen arr;
	arr = SucheAlleMoeglichenZuege();

	for (size_t i=0; i&lt;arr.size(); i++)
	{
		SimuliereZug(arr[i]);

		if (depth == 0 || KeineZuegeMehrMoeglich())
			neuerwert = BewerteSpieleSituationVonDemDerAmZugIst();
		else
			neuerwert = Min(depth-1);

		MacheZugRueckgaengig();

		if (neuerwert&gt;alterwert)
			alterwert = neuerwert;
	}

	return alterwert;
}

void FuehreBestenZugAus()
{
	// hier ist auch so ein Problem - wie finde ich jetzt anhand von Min()
	// und Max() den besten Zug?
}
</code></pre>
<p>Und wie erweitere ich dann den Algorithmus um das AlphaBeta-Verfahren, um einen Laufzeitvorteil zu erlangen? (wobei ich ja schon zufrieden waere, wenn das mit dem Minimax funktioniert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> )<br />
Waehre fuer jede Hilfe dankbar!</p>
<p>P.S.: Bitte nicht ins Spiele-Forum verschieben, weil 1. hat das nichts mit Grafik zu tun und 2. kann ich dann nicht mehr antworten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266911/minimix-alphabeta-fuer-ki</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 18:15:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266911.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 16 May 2010 14:46:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Minimix&#x2F;AlphaBeta fuer KI on Sun, 16 May 2010 14:46:43 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Ich versuche derzeit eine KI mit Hilfe des Minimax-Algorithmus zu schreiben, aber kriege es noch nicht so wirklich hin...<br />
z.B. was stimmt hier nicht?</p>
<pre><code class="language-cpp">int Min(int depth)
{
	int neuerwert;
	int alterwert = 10000;

	ArrayVonZuegen arr;
	arr = SucheAlleMoeglichenZuege();

	for (size_t i=0; i&lt;arr.size(); i++)
	{
		SimuliereZug(arr[i]);

		if (depth == 0 || KeineZuegeMehrMoeglich())
			neuerwert = BewerteSpieleSituationVonDemDerAmZugIst();
		else
			neuerwert = Max(depth-1);

		MacheZugRueckgaengig();

		if (neuerwert&lt;alterwert)
			alterwert = neuerwert;
	}

	return alterwert;
}

int Max(int depth)
{
	int neuerwert;
	int alterwert = -10000;

	ArrayVonZuegen arr;
	arr = SucheAlleMoeglichenZuege();

	for (size_t i=0; i&lt;arr.size(); i++)
	{
		SimuliereZug(arr[i]);

		if (depth == 0 || KeineZuegeMehrMoeglich())
			neuerwert = BewerteSpieleSituationVonDemDerAmZugIst();
		else
			neuerwert = Min(depth-1);

		MacheZugRueckgaengig();

		if (neuerwert&gt;alterwert)
			alterwert = neuerwert;
	}

	return alterwert;
}

void FuehreBestenZugAus()
{
	// hier ist auch so ein Problem - wie finde ich jetzt anhand von Min()
	// und Max() den besten Zug?
}
</code></pre>
<p>Und wie erweitere ich dann den Algorithmus um das AlphaBeta-Verfahren, um einen Laufzeitvorteil zu erlangen? (wobei ich ja schon zufrieden waere, wenn das mit dem Minimax funktioniert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> )<br />
Waehre fuer jede Hilfe dankbar!</p>
<p>P.S.: Bitte nicht ins Spiele-Forum verschieben, weil 1. hat das nichts mit Grafik zu tun und 2. kann ich dann nicht mehr antworten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897941</guid><dc:creator><![CDATA[Blupper]]></dc:creator><pubDate>Sun, 16 May 2010 14:46:43 GMT</pubDate></item><item><title><![CDATA[Reply to Minimix&#x2F;AlphaBeta fuer KI on Sun, 16 May 2010 14:53:43 GMT]]></title><description><![CDATA[<p>Du hast etwas wichtiges vergessen: Was ist dein Problem? Ich sehe nur eine Menge Programmcode in dem angeblich irgendein nicht näher bekannter Fehler sein soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897946</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 16 May 2010 14:53:43 GMT</pubDate></item><item><title><![CDATA[Reply to Minimix&#x2F;AlphaBeta fuer KI on Sun, 16 May 2010 15:14:29 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Zug FuehreBestenZugAusNeeFindeIhnNur()
{
//alles kopier von Max
    int neuerwert; 
    Zug alterzug; //neu
    int alterwert = -10000; 

    ArrayVonZuegen arr; 
    arr = SucheAlleMoeglichenZuege(); 

    for (size_t i=0; i&lt;arr.size(); i++) 
    { 
        SimuliereZug(arr[i]); 

        if (depth == 0 || KeineZuegeMehrMoeglich()) 
            neuerwert = BewerteSpieleSituationVonDemDerAmZugIst(); 
        else 
            neuerwert = Min(depth-1); 

        MacheZugRueckgaengig(); 

        if (neuerwert&gt;alterwert) 
        {
            alterwert = neuerwert; 
            alterzug = arr[i];//neu
        }
    } 

    return alterzug; //geändert
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1897957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897957</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 16 May 2010 15:14:29 GMT</pubDate></item><item><title><![CDATA[Reply to Minimix&#x2F;AlphaBeta fuer KI on Sun, 16 May 2010 16:23:55 GMT]]></title><description><![CDATA[<p>hi<br />
uff... also hab jetzt noch die ganze Zeit rumprobiert - aber meine KI bleibt einfach nur strohdumm... hab das jetzt genauso implementiert wie du (volkard) es geschrieben hast, aber irgendwo ist noch der Wurm drin.<br />
Wo liegt nur der Fehler?<br />
Teilweise wiederholt die KI auch sinnloserweise Zuege, obwohl diese haetten vermieden werden koennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897987</guid><dc:creator><![CDATA[Blupper]]></dc:creator><pubDate>Sun, 16 May 2010 16:23:55 GMT</pubDate></item><item><title><![CDATA[Reply to Minimix&#x2F;AlphaBeta fuer KI on Sun, 16 May 2010 18:17:18 GMT]]></title><description><![CDATA[<p>Ich hab nix verbessert oder repariert, sondern nur</p>
<pre><code class="language-cpp">// hier ist auch so ein Problem - wie finde ich jetzt anhand von Min() 
// und Max() den besten Zug?
</code></pre>
<p>beantwortet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1898052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1898052</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 16 May 2010 18:17:18 GMT</pubDate></item></channel></rss>