Algorithmus-Optimierung Meisterschaft. - Seite 15

 

Die Teilnehmer können hier bereits kompilierte FF-Funktionen als *.ex5-Bibliotheken einstellen, um sozusagen mit dem Training zu beginnen.

Die FF-Bibliothek sollte zwei Funktionen enthalten, die aufgerufen werden können:

double FF(double &array []);
int ParamCount();

ParamCount() wird verwendet, um herauszufinden, wie viele Parameter optimiert werden sollen.

Genau diese beiden Funktionen werden in der Meisterschaft FF sein.

 
Andrey Dik:
Darum geht es bei der Meisterschaft: das Maximum einer unbekannten Funktion mit 100 bis 500 Variablen (Wurzeln) auf beliebige Weise und in beliebiger Sprache zu finden. Lesen Sie die Regeln.
Dann werde ich wohl mitmachen. Ich danke Ihnen.
 
Andrey Dik:

Einfach? Großartig!

Wie kann man "schneller" und "genauer" prüfen, wenn die Algorithmen in den Händen der Teilnehmer liegen? Wie kann man überprüfen, ob ein Teilnehmer eine Lösung in weniger Schritten als bei einer vollständigen Brute-Force-Analyse gefunden hat?

Ein kompletter Brute-Force-Einsatz kann ewig dauern. Er ist keine Konkurrenz für uns.

"Schneller" bedeutet schneller. Sie, hier, zur vereinbarten Zeit, geben uns die Gleichung. Wir lösen es. Wer zuerst da ist, hat angeblich den besten Algorithmus.

Was "genauer" betrifft. In diesem Beispiel.

Finden Sie die Wurzeln der Gleichung: 34a+43b+16c+30d+23e=6268; Lösungen sind ganze Zahlen a=26, b=12, c=111, d=100, e=4

Wenn der Kandidat diese Zahlen findet, ist die Genauigkeit -100%.

 
Alexey Burnakov:
Dann bin ich dabei, denke ich. Ich danke Ihnen.
Soll ich mich anmelden?
 
Es ist eine Herausforderung, ein Brute-Force-Problem so optimal wie möglich in Polynomialzeit zu lösen. Jemand könnte einfach Glück haben, wenn sein Algorithmus anfangs nahe am Optimum liegt. Es braucht ein paar Probleme, ganz klar!
 
Andrey Dik:
Soll ich es aufschreiben?
Ja, bitte.
 
Yuri Evseenkov:

Ein kompletter Overkill könnte ewig dauern. Er ist keine Konkurrenz für uns.

"Schneller" bedeutet schneller. Sie, hier, zur vereinbarten Zeit, geben uns die Gleichung. Wir lösen es. Wer zuerst da ist, hat angeblich den besten Algorithmus.

Was "genauer" betrifft. In diesem Beispiel.

Finden Sie die Wurzeln der Gleichung: 34a+43b+16c+30d+23e=6268; Lösungen sind ganze Zahlen a=26, b=12, c=111, d=100, e=4

Wenn der Kandidat diese Zahlen findet, ist die Genauigkeit -100%.

Nein, so funktioniert das nicht. Sie verstehen, dass jemand eine vollständige Suche durchführt und dann sagt, er/sie habe die Lösung in 27 Schritten gefunden. Wir sind nicht so naiv (obwohl wir Händler sind), dass wir an solche Nudeln glauben würden.
 
Alexey Burnakov:
Ja, bitte.
Andrej Dik
Retrog Konow
Igor Wolodin
Dmitri Fedosejew
Sergej Chalyschew
Ghenadie Tumco
Alexej Burnakow
 
Alexey Burnakov:
Es ist eine Herausforderung, ein Brute-Force-Problem so optimal wie möglich in Polynomialzeit zu lösen. Jemand könnte einfach Glück haben, wenn sein Algorithmus anfangs nahe am Optimum liegt. Brauche mehrere Probleme, eindeutig!
Vergessen Sie nicht, dass es für statistisch signifikante Ergebnisse mehrere Durchläufe des Algorithmus geben wird, nicht nur einen. Das maximale Ergebnis, das ein Teilnehmer bei einer völlig zufälligen Suche erwarten kann, beträgt also etwa 50 % des Maximums.
 
Welcher Zusammenhang besteht zwischen der Analogie der klaren Oberfläche und dem angegebenen Gleichungsbeispiel? In welcher Hinsicht konvergieren sie?