<?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[&amp;quot;Brute Force Algorithmus&amp;quot; - geht das noch schneller?]]></title><description><![CDATA[<p>Hey Leute, mir war grad langweilig, also hab ich was versucht, was mir vor nem halben Jahr noch nicht gelungen ist - einen einfachen Brute-Force Algorithmus. Außerdem hab ich Rekursion endlich komplett verstanden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Hier mein Programm, bzw. die beiden Funktionen, die es ausmachen:</p>
<pre><code class="language-cpp">inline bool inc(std::string&amp; str, int curpos, char begin, char end)
{
    if (str[curpos] == end)
    {
        str[curpos] = begin;
        if (curpos == 0)
        {
            return false;
        }

        return inc(str, curpos-1, begin, end);
    }
    else
        str[curpos]++;
    return true;
}

bool pw(std::string ziel, int maxlen, char start = ' ', char end = '~')
{
    for (int i = 1; i&lt;maxlen; ++i)
    {
        std::string str(i, start);
        do
        {
            if (str == ziel)
                return true;
        }while(inc(str, str.size()-1, start, end));
    }
    return false;
}
</code></pre>
<p>Man ruft pw mit dem Ziel auf (ist ja nur zum Spaß, ergibt natürlich keinen wirklichen Sinn) und gibt die Länge an, bis zu der er suchen soll. Außerdem noch ein start- und ein endzeichen, alles dazwischen wird in die suche einbezogen.<br />
Ist garantiert noch nicht das Gelbe vom Ei und ich muss gestehen, von solchen Professionellen Sachen in Sachen C++ (z.B. Template Metaprogrammierung) hab ich noch net viel Ahnung, aber mich würde mal interessieren, wie man das noch schneller hinbekommt bzw. wie man sowas heutzutage mit C++ löst. Keine Angst, hab nicht vor irgendwen zu hacken, dazu is mein PC viel zu schwach <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Danke Schonmal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/306424/quot-brute-force-algorithmus-quot-geht-das-noch-schneller</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 06:28:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/306424.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 28 Jul 2012 00:06:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to &amp;quot;Brute Force Algorithmus&amp;quot; - geht das noch schneller? on Sat, 28 Jul 2012 00:06:08 GMT]]></title><description><![CDATA[<p>Hey Leute, mir war grad langweilig, also hab ich was versucht, was mir vor nem halben Jahr noch nicht gelungen ist - einen einfachen Brute-Force Algorithmus. Außerdem hab ich Rekursion endlich komplett verstanden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Hier mein Programm, bzw. die beiden Funktionen, die es ausmachen:</p>
<pre><code class="language-cpp">inline bool inc(std::string&amp; str, int curpos, char begin, char end)
{
    if (str[curpos] == end)
    {
        str[curpos] = begin;
        if (curpos == 0)
        {
            return false;
        }

        return inc(str, curpos-1, begin, end);
    }
    else
        str[curpos]++;
    return true;
}

bool pw(std::string ziel, int maxlen, char start = ' ', char end = '~')
{
    for (int i = 1; i&lt;maxlen; ++i)
    {
        std::string str(i, start);
        do
        {
            if (str == ziel)
                return true;
        }while(inc(str, str.size()-1, start, end));
    }
    return false;
}
</code></pre>
<p>Man ruft pw mit dem Ziel auf (ist ja nur zum Spaß, ergibt natürlich keinen wirklichen Sinn) und gibt die Länge an, bis zu der er suchen soll. Außerdem noch ein start- und ein endzeichen, alles dazwischen wird in die suche einbezogen.<br />
Ist garantiert noch nicht das Gelbe vom Ei und ich muss gestehen, von solchen Professionellen Sachen in Sachen C++ (z.B. Template Metaprogrammierung) hab ich noch net viel Ahnung, aber mich würde mal interessieren, wie man das noch schneller hinbekommt bzw. wie man sowas heutzutage mit C++ löst. Keine Angst, hab nicht vor irgendwen zu hacken, dazu is mein PC viel zu schwach <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Danke Schonmal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2236366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2236366</guid><dc:creator><![CDATA[Ich bin Matrix...]]></dc:creator><pubDate>Sat, 28 Jul 2012 00:06:08 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Brute Force Algorithmus&amp;quot; - geht das noch schneller? on Sat, 28 Jul 2012 00:18:27 GMT]]></title><description><![CDATA[<p>Zwei Sachen, die mir spontan einfallen:<br />
-lass das &quot;inline&quot; weg. Dein compiler igoniert dich sowieso.<br />
-Warum das Ganze rekursiv aufziehen? Bei der iterativen Variante sparst du dir die Funktionsaufrufe und du musst keine Angst haben, irgendwann aus dem Stack zu fallen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2236370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2236370</guid><dc:creator><![CDATA[asdfasd]]></dc:creator><pubDate>Sat, 28 Jul 2012 00:18:27 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Brute Force Algorithmus&amp;quot; - geht das noch schneller? on Sat, 28 Jul 2012 00:26:36 GMT]]></title><description><![CDATA[<p>Nicht auf deine Frage bezogen, deswegen Teils-Offtopic:<br />
Brute Force-Algorithmen lässt man heutzutage über die GPU (Grafikkarten&quot;prozessor&quot;) laufen. Diese sind zwar auf Grafikoperationen ausgelegt, bieten aber eine breitere, parallele Rechenoperationsleistung (im Gegensatz zur CPU).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2236371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2236371</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sat, 28 Jul 2012 00:26:36 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Brute Force Algorithmus&amp;quot; - geht das noch schneller? on Sat, 28 Jul 2012 07:05:28 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Brute Force-Algorithmen lässt man heutzutage über die GPU (Grafikkarten&quot;prozessor&quot;) laufen.</p>
</blockquote>
<p>In dieser Pauschalität ist das, wie immer, falsch.</p>
<p>Topic: mir ist nicht ganz klar, was die Funktion machen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2236381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2236381</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sat, 28 Jul 2012 07:05:28 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Brute Force Algorithmus&amp;quot; - geht das noch schneller? on Sat, 28 Jul 2012 08:08:15 GMT]]></title><description><![CDATA[<p>Ich bin Matrix... schrieb:</p>
<blockquote>
<p>aber mich würde mal interessieren, wie man das noch schneller hinbekommt bzw. wie man sowas heutzutage mit C++ löst. Keine Angst, hab nicht vor irgendwen zu hacken, dazu is mein PC viel zu schwach <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Danke Schonmal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Die meisten Rechner haben ja mehrere CPUs heutzutage. Deren zusätzliche Benutzung<br />
könnte die Berechnung schneller machen.<br />
Stichwort dafür ist: Threads.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2236393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2236393</guid><dc:creator><![CDATA[redrew99]]></dc:creator><pubDate>Sat, 28 Jul 2012 08:08:15 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Brute Force Algorithmus&amp;quot; - geht das noch schneller? on Sat, 28 Jul 2012 10:08:04 GMT]]></title><description><![CDATA[<p>redrew99 schrieb:</p>
<blockquote>
<p>Ich bin Matrix... schrieb:</p>
<blockquote>
<p>aber mich würde mal interessieren, wie man das noch schneller hinbekommt bzw. wie man sowas heutzutage mit C++ löst. Keine Angst, hab nicht vor irgendwen zu hacken, dazu is mein PC viel zu schwach <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Danke Schonmal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Die meisten Rechner haben ja mehrere CPUs heutzutage. Deren zusätzliche Benutzung<br />
könnte die Berechnung schneller machen.<br />
Stichwort dafür ist: Threads.</p>
</blockquote>
<p>Ich würde nicht direkt auf Threads aufsetzen, sondern eine Bibliothek nutzen, die dir hilft. So Zeugs lässt sich z.B. Prima mit <a href="http://threadingbuildingblocks.org/" rel="nofollow">Intel TBB</a> parallelisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2236407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2236407</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 28 Jul 2012 10:08:04 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Brute Force Algorithmus&amp;quot; - geht das noch schneller? on Sat, 28 Jul 2012 13:08:27 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Brute Force-Algorithmen lässt man heutzutage über die GPU (Grafikkarten&quot;prozessor&quot;) laufen.</p>
</blockquote>
<p>In dieser Pauschalität ist das, wie immer, falsch.</p>
</blockquote>
<p>Warum sollte es falsch sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2236430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2236430</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sat, 28 Jul 2012 13:08:27 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Brute Force Algorithmus&amp;quot; - geht das noch schneller? on Sat, 28 Jul 2012 14:28:09 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Warum sollte es falsch sein?</p>
</blockquote>
<p>Schonmal Programme auf einer Grafikkarte implementiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2236448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2236448</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sat, 28 Jul 2012 14:28:09 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Brute Force Algorithmus&amp;quot; - geht das noch schneller? on Sat, 28 Jul 2012 14:59:54 GMT]]></title><description><![CDATA[<p>Danke euch allen erstmal für die Antworten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<blockquote>
<p>-lass das &quot;inline&quot; weg. Dein compiler igoniert dich sowieso.</p>
</blockquote>
<p>Ich weiß, war auch eher zum Spaß <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<blockquote>
<p>-Warum das Ganze rekursiv aufziehen? Bei der iterativen Variante sparst du dir die Funktionsaufrufe und du musst keine Angst haben, irgendwann aus dem Stack zu fallen</p>
</blockquote>
<p>Versteh ich nicht ganz, denn das einzige, was in meinem Beispiel rekursiv ist ist die &quot;Erhöhung&quot; des strings. Hättest du einen kurzen Codeschnipsel als Denkanstoß? Muss nicht lauffähig sein, Pseudocode tätes auch. Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<blockquote>
<p>Topic: mir ist nicht ganz klar, was die Funktion machen soll.</p>
</blockquote>
<p>Ist doch eig. selbsterklärend. <code>pw()</code> legt einen neuen string an und füllt ihn mit dem Startzeichen und &quot;Erhöht&quot; ihn dann solange um &quot;1&quot;, bis es wieder beim Startstring angekommen ist, dann wird das ganze bis zur maximalen Wortlänge wiederholt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2236451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2236451</guid><dc:creator><![CDATA[Ich bin Matrix...]]></dc:creator><pubDate>Sat, 28 Jul 2012 14:59:54 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Brute Force Algorithmus&amp;quot; - geht das noch schneller? on Sat, 28 Jul 2012 19:08:23 GMT]]></title><description><![CDATA[<p>Ich bin Matrix... schrieb:</p>
<blockquote>
<p>Versteh ich nicht ganz, denn das einzige, was in meinem Beispiel rekursiv ist ist die &quot;Erhöhung&quot; des strings.</p>
</blockquote>
<pre><code class="language-cpp">inline bool inc(std::string&amp; str, int curpos, char begin, char end) 
{ 
    if (str[curpos] == end) 
    { 
        str[curpos] = begin; 
        if (curpos == 0) 
            return false; 

        return inc(str, curpos-1, begin, end);//Hier fängt die Rekursion an
    } 
    else 
        ++str[curpos]; 
    return true; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2236502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2236502</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 28 Jul 2012 19:08:23 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Brute Force Algorithmus&amp;quot; - geht das noch schneller? on Sat, 28 Jul 2012 19:30:37 GMT]]></title><description><![CDATA[<p>Die Rekursionstiefe ist hier maximal curpos, d.h. maximal die Länge des Strings. Ich denke bei den Eingabegrößen, bei denen Brute Force noch einigermaßen anwendbar ist, sollte der Stack gerade noch reichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2236509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2236509</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Sat, 28 Jul 2012 19:30:37 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Brute Force Algorithmus&amp;quot; - geht das noch schneller? on Sat, 28 Jul 2012 21:04:54 GMT]]></title><description><![CDATA[<p>Einfach mal so eine idee mit dem Stack, die Parameter werden ja auch drauf abgelegt. Man könnte ja eine struct machen, dann spart man schon mal eine Menge. Noch besser wäre natürlich, wenn man das ganze im Sinne von __fastcall, also die Parameter gerade in die Register laden würde. Dann bleibt nur noch die Returnadresse vom Call auf dem Stack liegen.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2236524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2236524</guid><dc:creator><![CDATA[yihaaa]]></dc:creator><pubDate>Sat, 28 Jul 2012 21:04:54 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;quot;Brute Force Algorithmus&amp;quot; - geht das noch schneller? on Sun, 29 Jul 2012 01:10:59 GMT]]></title><description><![CDATA[<p>1.) Also hier werden einem Anfaenger Threads und OpenCl empfohlen ... das ist keine Hilfe, sondern nur rumposen.<br />
2.) Sieht die Funktion sehr endrekursiv aus, dein Kompiler sollte die Rekursion wegoptimieren.</p>
<p>Lerne also erstmal weiter C++ bevor du anfaengst rumzufuschen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2236547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2236547</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Sun, 29 Jul 2012 01:10:59 GMT</pubDate></item></channel></rss>