POTHIEDU Não Decore a Resposta. Entenda o Caminho

Dez Pessoas Entre Elas Gilberto E Laura

Dez Pessoas Entre Elas Gilberto E Laura

Como resolver problemas de arrangedamento com dez pessoas

Oito anos atrás eu tava num concurso público e cai uma questão desses tipo fila indiana com dez sujeitos,Constraints cruzadas, nomes aleatórios. Eu acertei na hora mas só porque já tinha visto esse problema repetidamente. O que a maioria das pessoas não entende é que existe um método mecânico que elimina adivinhação completamente. Quando você lê o enunciado como "dez pessoas entre elas gilberto e laura", o primeiro passo não é tentar montar a fila na cabeça. É transformar cada constraint em uma frase negativa. Por exemplo, se a questão diz "Gilberto não fica ao lado de Laura", você anota na sua tabela: G adjacente a L. Isso parece óbvio mas a maioria das pessoas anotam apenas o que é dito e esquecem de registrar o que não pode acontecer.

dez pessoas entre elas gilberto e laura

O segundo passo é identificar restrições absolutas antes das relativas. Restrição absoluta é quando algo é fixo. "Ana é a primeira da fila". Pronto. Ana tá na posição 1. Você marca e avança. Restrição relativa é do tipo "Carlos fica dois lugares depois de Beatriz". Essa depende de onde você posicionar Beatriz primeiro. Na prática, o erro mais comum é tentar resolver começando pelas relativas. Você começa, faz uma suposição, chega num beco sem saída, volta três passos, refaz. Com dez pessoas isso pode te levar vinte minutos e ainda simerr. Começando pelas absolutas você economiza cerca de doze minutos em média porque elimina ramas inteiras da árvore de possibilidades logo no início. Monte uma tabela. Colunas são as posições, linhas são as pessoas. Use uma planilha simples ou até papel mesmo. Para dez pessoas com regras cruzadas, eu costumo usar uma grade 10x10 onde marco com X as impossibilidades e com V os seguros. A cada nova constraint você preenche a linha e a coluna correspondente. Quando uma linha fica toda preenchida com V, aquela pessoa tem posição definida. Quando uma coluna fica toda com X exceto uma célula, essa posição pertence àquela pessoa.

Aqui vai uma coisa que não ensinam em curso nenhum: processadores de contraint são mais fáceis de visualizar horizontalmente do que verticalmente. Ou seja, marque primeiro todas as linhas (pessoas) e depois todas as colunas (posições). Quando você faz o inverso, perde informação de propagação. Uma vez eu perdi uma questão porque não percebi que, após marcar as posições proibidas para o Fábio, sobrava uma única coluna disponível pra ele. Se eu tivesse verificado as colunas primeiro, teria visto isso em trinta segundos ao invés de cinco minutos depois.

Dez Pessoas Entre Elas Gilberto E Laura - RETOEDU
Dez Pessoas Entre Elas Gilberto E Laura - RETOEDU

Restrições de vizinhança e o truque dos blocos

Quando a questão diz "Diego e Elisa ficam juntos", não trate como duas informações separadas. Trate como um bloco único que ocupa duas posições adjacentes. Isso reduz o problema de dez pessoas para nove entidades, o que diminui exponencialmente as combinações possíveis. Com dez vagas e dois fixos juntos, você tem basicamente nove posições candidatas pro bloco em vez de tentar posicionar cada um isoladamente. O mesmo funciona com "não podem ficar juntos". Aí você marca todas as posições adjacentes como proibidas para o par. Não adianta só anotar que eles não podem estar lado a lado. Você precisa bloquear explicitamente cada par de células adjacentes na sua grade. Dezenove pares de células adjacentes em uma fila de dez. Bloquear todos visualmente evita que você escorregue e coloque um ao lado do outro sem perceber. Outro detalhe prático: quando aparecem restrições do tipo "Fica entre X e Y", significa que a ordem pode ser X-pessoa-Y ou Y-pessoa-X. Duas possibilidades, não uma. Muitos candidatos tratam como se fosse ordem fixa e eliminam soluções válidas. Eu já vi gente deixar de marcar uma alternativa correta por causa disso em prova de raciocínio lógico.

Quando o método não funciona

Se o problema tiver mais de oito restrições cruzadas envolvendo o mesmo subconjunto de pessoas, a tabela manual começa a ficar ilegível. Cada célula vira um nó de intersectação e você gasta mais tempo decipherando sua própria escrita do que resolvendo. Nesses casos, o caminho mais eficiente é mudar de estratégia e usar eliminação por alternativas. Se for questão de múltipla escolha, você testa cada alternativa contra todas as constraints de uma vez. Errar uma constraint já elimina a opção inteira. Para questões discursivas com dezenove ou mais elementos e regras circulares, tabela não escala. O tempo de processamento manual cresce de forma não-linear. Nesses cenários avançados, modelos computacionais como Solver ou até uma script simples em Python com backtracking são mais adequados. Mas isso já é outro papo. O que funciona na maioria das vezes, e vale lembrar, é a disciplina de anotar tudo. Constraint que fica só na cabeça é constraint que você esquece no meio do processo. Escreva. Marque. Verifique. Repita. É cansativo no começo mas depois de uns quinze exercícios resolvidos assim, o padrão de propagação de restrições vira instinto. E aí você consegue resolver dez pessoas entre elas gilberto e laura, ou qualquer variação disso, em menos de três minutos sem nem precisar da tabela completa.