Buscar

celebridade

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Caso Base: 
Se uma festa tem 1 pessoa então essa pessoa é a celebridade. 
Assim, uma festa com 1 pessoa é necessário 0 perguntas para descobrir quem é 
a celebridade. 
Logo, a fórmula é válida n=1, ou seja, 3*0 = 0 perguntas para encontrar a 
celebridade, se houver uma, com 
3(n-1) perguntas. 
Hipótese de Indução: 
Uma festa com n-1 pessoas são necessários  para encontrar a celebridade, se 
houver uma,3(n-1-1) perguntas, ou seja, 3(n-2). 
Passo de indução: 
Suponha uma festa com n pessoas, temos que mostrar que podemos encontrar a 
celebridade, se houver uma, 
com 3(n-1) perguntas. 
Seja S o conjunto de todas as pessoas. 
Escolha duas pessoas x e y do conjunto S  de pessoas. 
Se x conhece y então 
    Logo, x não é uma celebridade 
    Faça S' = S - {x}. Dessa maneira, S' tem n-1 pessoas 
    Por hipótese de indução, podemos encontrar a celebridade z, se houver, 
com 3(n-2) perguntas. 
    Se não houver uma celebridade em S' então S não tem celebridade 
    Senão Para z ser uma celebridade de toda a festa, ela não pode conhecer 
x e x conhece z. 
    O total de perguntas foram 1+ 3(n-2) + 2 = 1 + 3n -6 +2 = 3n -3 = 3(n-1) 
Senão 
    Logo, y não é uma celebridade. 
    Faça S' = S - {y}. Dessa maneira S' tem n-1 pessoas. 
     Por hipótese de indução, podemos encontrar a celebridade z, se houver, 
com 3(n-2) perguntas. 
    Se não houver uma celebridade em S' então S não tem celebridade 
    senão para z ser uma celebridade de toda a festa, ela não pode conhecer 
y e y conhece z. 
    O total de perguntas foram 1+ 3(n-2) + 2 = 1 + 3n -6 +2 = 3n -3 = 3(n-1) 
int celebridade(S) 
Seja S um conjunto de pessoas. 
se length(S) == 1 então 
   return z que está em  S 
senão 
   x,y <- escolha duas pessoas da lista 
   se x conhece y então 
      S' = S - {x} 
      z = celebridade(S') 
      if( !pergunta(z,x) && pergunta(x,z)) return z; 
      else return -1; 
   senao 
      S' = S - {y} 
      z = celebridade(S') 
      if( !pergunta(z,y) && pergunta(y,z)) return z; 
      else return -1; 
Wladimir Araujo Tavares 
*Federal University of Ceará <http://lia.ufc.br/%7Ewladimir/> 
Homepage <http://lia.ufc.br/%7Ewladimir/> | 
Maratona<https://sites.google.com/site/quixadamaratona/>| 
* 
    Reply     Reply to author      Forward        
Report spam
	
	
	
	
		
	
	
	
	Wladimir Tavares  
		View profile   Translate to English
	 More options Sep 19, 5:33 pm
	
	
Caros alunos, 
Faltou um teste!! 
int celebridade(S) 
   //Seja S um conjunto de pessoas. 
   se length(S) == 1 então 
   return z que está em  S 
senão 
   x,y <- escolha duas pessoas da lista 
   se x conhece y então 
      S' = S - {x} 
      z = celebridade(S') 
      *if(z==-1) return -1;* 
      else if( !pergunta(z,x) && pergunta(x,z)) return z; 
      else return -1; 
   senao 
      S' = S - {y} 
      z = celebridade(S') 
     * if(z==-1) return -1;* 
      else if( !pergunta(z,y) && pergunta(y,z)) return z; 
      else return -1;

Outros materiais