2. Honest Goblins are Easy to Find At Hogwarts a new shipment of n goblins has arrived. To be of any use, a goblin must be completely truthful (never lies). Unfortunately, not all of the ngoblins in the shipment are truth tellers. Only some are truth-tellers, and some are deceivers. It is your task to design an algorithm to separate the truth-teller r goblins from the deceiver goblins. To do this, you have one 1 and that you test, the following can be concluded from the goblin responses Geblin A says Goblin B says Conclusion Bis a truth-teller A is a truth-teller both are truth-tellers or both are deceivers B is a truth-teller A is a deceiver at least one is a deceiver Bisa deceiver A is a truth-teller at least one is a deceiver Bis a deceiver A is a deceiver at least one is a deceiver Comparing 2 goblins with each other cests 1"goblin comparison". Assume that more than half of the given n goblins are truth tellers. Design an O(n) goblin comparison algorithm that will identify 1 truth teller.

C++ Programming: From Problem Analysis to Program Design
8th Edition
ISBN:9781337102087
Author:D. S. Malik
Publisher:D. S. Malik
Chapter15: Recursion
Section: Chapter Questions
Problem 18SA
icon
Related questions
Question
2. Honest Goblins are Easy to Find
At Hogwarts a new shipment of n goblins has arrived. To be of any use, a goblin must be completely truthful (never lies). Unfortunately, not all of the n goblins in the shipment are truth tellers. Only some are truth-tellers, and some are deceivers. It is your task to design an algorithm to separate the
truth-teller goblins from the deceiver goblins. To do this, you have one tool available: You may combine any two goblins and have them state whether the other goblin is a truth-teller or a deceiver. A truth-teller will always say correctly what the other goblin is, but a deceiver may lie (but also may
sometimes tell the truth to REALLY confuse you). For any two goblins that you test, the following can be concluded from the goblin responses:
Goblin A says
Goblin B says
Conclusion
B is a truth-teller
A is a truth-teller
both are truth-tellers or both are deceivers
B is a truth-teller
A is a deceiver
at least one is a deceiver
B is a deceiver
A is a truth-teller
at least one is a deceiver
B is a deceiver
A is a deceiver
at least one is a deceiver
Comparing 2 goblins with each other costs 1 "goblin comparison". Assume that more than half of the given n goblins are truth tellers. Design an O(n) goblin comparison algorithm that will identify 1 truth teller.
3. Card Flipper: You walk into a room, and see a row of n cards. Each one has a number x; written on it, where i ranges from 1 to n. However, initially all the cards are face down. Your goal is to find a local minimum: that is, a card i whose number is less than or equal to those of its neighbors, x-1= X;
<= Xj+1. The first and last cards can also be local minima, and they only have one neighbor to compare to. There can be many local minima, but you are only responsible for finding one of them.
Obviously you can solve this problem by turning over all n cards, and scanning through them. However, show that you can find such a minimum by turning over only O(log n) cards.
4. Even Faster Multiplication?
Show how to multiply 2 n-digit numbers by breaking the problem down into 5 subproblems of roughly one third the size. Turn this into a recursive multiplication algorithm and analyze the run time.
Transcribed Image Text:2. Honest Goblins are Easy to Find At Hogwarts a new shipment of n goblins has arrived. To be of any use, a goblin must be completely truthful (never lies). Unfortunately, not all of the n goblins in the shipment are truth tellers. Only some are truth-tellers, and some are deceivers. It is your task to design an algorithm to separate the truth-teller goblins from the deceiver goblins. To do this, you have one tool available: You may combine any two goblins and have them state whether the other goblin is a truth-teller or a deceiver. A truth-teller will always say correctly what the other goblin is, but a deceiver may lie (but also may sometimes tell the truth to REALLY confuse you). For any two goblins that you test, the following can be concluded from the goblin responses: Goblin A says Goblin B says Conclusion B is a truth-teller A is a truth-teller both are truth-tellers or both are deceivers B is a truth-teller A is a deceiver at least one is a deceiver B is a deceiver A is a truth-teller at least one is a deceiver B is a deceiver A is a deceiver at least one is a deceiver Comparing 2 goblins with each other costs 1 "goblin comparison". Assume that more than half of the given n goblins are truth tellers. Design an O(n) goblin comparison algorithm that will identify 1 truth teller. 3. Card Flipper: You walk into a room, and see a row of n cards. Each one has a number x; written on it, where i ranges from 1 to n. However, initially all the cards are face down. Your goal is to find a local minimum: that is, a card i whose number is less than or equal to those of its neighbors, x-1= X; <= Xj+1. The first and last cards can also be local minima, and they only have one neighbor to compare to. There can be many local minima, but you are only responsible for finding one of them. Obviously you can solve this problem by turning over all n cards, and scanning through them. However, show that you can find such a minimum by turning over only O(log n) cards. 4. Even Faster Multiplication? Show how to multiply 2 n-digit numbers by breaking the problem down into 5 subproblems of roughly one third the size. Turn this into a recursive multiplication algorithm and analyze the run time.
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Intelligent Machines
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning