Je suis aux prises avec le problème suivant:Mon approche est-elle correcte?
donné un graphe orienté avec 3 < = N = 1000 < sommets et 3 < = M < = 1000000 bords vous pouvez choisir un cycle simple de ce graphique et marcher it.While vous marchez le cycle à chaque bord vous êtes posé une question si vous répondez correctement votre argent est doublé autrement il est réduit de moitié.
Disons que vous avez dollars D et la chance vous répondez correctement à une question à un E_I de bord est p_i, l'argent devrait avoir après avoir répondu à cette question est:
2 * D p_i + de 1/2 (D (1-p_i)) = D (1/2 + 3 * p_i/2)
Cherchez s'il y a un cycle simple dans le graphique donné que vous pouvez marcher et l'argent que vous aurez après avoir marché c'est plus que l'argent que vous avez commencé avec. Mon approche consiste à utiliser l'algorithme de Johnson pour trouver tous les cycles simples et ensuite vérifier s'il y a un cycle pour lequel l'argent attendu est supérieur à celui avec lequel vous commencez mais je continue à obtenir des temps morts. Est-ce que je manque quelque chose? Y a-t-il une observation à faire ou devrais-je juste essayer d'optimiser mon code plus?
Je pense que celui-ci est pour [Math Overflow] (http://mathoverflow.com) –
@ T-Heron Oui et non :-) Certains aperçu mathématiques peuvent aider beaucoup, mais sans elle c'est une question algorithmiques. – Ante
Est-ce que la solution est de trouver un cycle ou de vérifier si le cycle existe? – Ante