vebersol 0 Denunciar post Postado Agosto 16, 2006 Olá pessoal, estou com um problema para juntar as estratégias. Para desenvolver a forma normal do jogo, é necessário primeiro dizer o número de jogadores do jogo, depois dizer quantas estratégias cada jogador possui e apartir daí dizer cada estratégia de cada jogador. Até aí eu consegui desenvolver. Mas para calcular os equilíbrios de nash preciso fazer A1 x A2 (A1 cartesiano A2 no exemplo abaixo). No entanto, não sei como cruzar os dados, por exemplo, quero fazer assim: A1 = {a, b} e A2 = {c, d, e} A1 x A2 = {(a, c), (a, d), (a, e), (b, c), (b, d), (b, e)} Se vocês rodarem o script vão ver que chego no resultado abaixo: Exemplo de um jogo com 2 jogadores e cada estratégia que ambos possuem. Ações para o jogador 1: Ação 0 => a Ação 1 => b Ações para o jogador 2: Ação 0 => c Ação 1 => d Ação 2 => e Desde já agradeço pela ajuda. <?php $no_jog = $_POST['jogadores'];if($_POST['tres']) { //Jogador$a = 1;while ($a <= $no_jog) {echo "Ações para o jogador $a:<br />";foreach ($_POST["estrategia_".$a.""] as $chave => $valor) {echo "Ação $chave => $valor<br />";}echo "<hr />";$a++;//fecha while}//fecha if 3}else {if($_POST['dois']) {echo "<form method=\"post\" name=\"main\">";//Jogador$a = 1;while ($a <= $no_jog) {//Estrategia$i = 1;$estrategia = $_POST["estrategia_".$a.""];for (;; ) { if ($i > $estrategia) { break; }echo "<p>Ação $i para o jogador $a: <input name=\"estrategia_".$a."[]\" type=\"text\" size=\"3\" /> </p>"; $i++;//fecha for}echo "<hr>";$a++;//Fecha while}echo "<p><input name=\"jogadores\" type=\"hidden\" value=\"$no_jog\"><input name=\"tres\" type=\"submit\" value=\"Enviar\"></p></form>";//fecha if dois}else {if($_POST['um']) {echo "<form method=\"post\" name=\"main\">";//Jogador$i = 1;for (;; ) { if ($i > $no_jog) { break; }echo "<p>Número de ações disponíveis para o jogador $i: <input name=\"estrategia_$i\" type=\"text\" size=\"3\" /> </p>"; $i++;//fecha for} echo "<p><input name=\"jogadores\" type=\"hidden\" value=\"$no_jog\"><input name=\"dois\" type=\"submit\" value=\"Enviar\"></p></form>";//fecha if}else { ?><form method="post" name="main"> <p>Número de Jogadores: <input name="jogadores" type="text" size="3" /> </p> <p> <input name="um" type="submit" value="Enviar"> </p></form><?php } } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
augustogava 0 Denunciar post Postado Agosto 16, 2006 seria essa multiplicação?? ou eu entendi errado... $c=0;for($i=0; $i<count($a); $i++){ for($e=0; $e<count($b); $e++){ $c+=$a[$i]*$b[$e]; }} Compartilhar este post Link para o post Compartilhar em outros sites
vebersol 0 Denunciar post Postado Agosto 16, 2006 Eu não entendi esse teu raciocínio, ou acho que tu não entendeste o meu. Passo 1: No arquivo que eu enviei tu determina um número x de jogadores, o que vou chamar de $no_jog, e cada jogador será $a no loop, ou seja, o loop sai de $a = 1 e vai até $a = $no_jog. Passo 2: Depois tu diz quantas estratégias tem cada jogador, o que vou chamar de $estrategia_$a (estrategia do jogador x), mais uma vez $i está relacionado a cada $a, e $i vai de $i = 1 até $i = $estrategia_$a. Passo 3: Até aí tudo ok, porque consigo gerar um input para cada estratégia, no meu exemplo, 2 inputs pro jogador 1 e 3 para o jogador 2 onde vou digitar a, b, c, d, e nos inputs. O próximo passo é fazer A1 (estrategias do jogador 1) X A2 (estratégias do jogador 2. Eu vi que dá pra fazer com array (""), mas não dá para formar um array de um while e um foreach. Fica claro que o número de jogadores e estratégias é infinito. Compartilhar este post Link para o post Compartilhar em outros sites