• groet@feddit.org
      link
      fedilink
      English
      arrow-up
      5
      ·
      1 day ago

      A Binary search requires a ordered data set. Something like "if you react to X, you will also react to any X+1, X+2… X+n. Food is not ordered, you cant know if you react badly to bell peper because you reacted badly to whole grain wheat.

      • Kazumara@discuss.tchncs.de
        link
        fedilink
        English
        arrow-up
        2
        ·
        22 hours ago

        Can’t you easily reduce this to a compatible problem though?

        Let’s say you have the set of foods you suspect: red blue green yellow brown purple

        You construct an ordered set from this by making the elements sets of foods such that each set is the one to its left plus any one more entry, the leftmost set is the empty one, and the rightmost is the one containing all your suspects:

        {}, {red}, {red, blue}, {red, blue, green} … {red, blue, green, yellow, brown}, {red, blue, green, yellow, brown, purple}

        Now a check operation means eating the elements in the current set, if you get sick you go half way to the left border and update the right one, if you don’t get sick you go half way to the right border and update the left one.

        You should end up with the smallest set that makes you sick. Subtract the set to the left of it and you have the food that makes you sick left over.

        • groet@feddit.org
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          44 minutes ago

          I dont think that works. If i try the 5 ingredient set and get sick, i gained no information about ingrediences 6,7,8,9,10 (if there are 10 ingredients in total). If next i try set 3 and get sick, i have made 2 tries and still have 0 information. If ingredient 1 makes me sick i will need log(n) tries until i try the set that only contains ingredient 1. After that i have only one point of information because everything i tried so far was tainted by ingredient 1. I have to try everything again.

          Anytime you get sick you gain no information. If you are very lucky and ingedient 1-x are all harmless, then you will eliminate multiple at once. But if 1 is harmless, 2 makes you sick, and the next 1000 ingredients are harmelss you will still have to try log(1002) times to eliminate ingredient 2 and then you know nothing about 3-1003.

        • rumba@lemmy.zip
          link
          fedilink
          English
          arrow-up
          1
          ·
          21 hours ago

          Yes, you can reduce it much faster assuming one food doesn’t contaminate random other foods and it’s not a workplace hygiene thing.

          You could also ask for a bowl, dressing on the side, take it home, try the tuna, 12h try the dressing, 12h try the veggies.

      • veleth@lemmy.wtf
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 day ago

        Not necessarily, but searching a data set that’s not ordered relies on an assumption that there’s a single thing you’re looking for.

        If there are 10 ingredients, you get sick and you only take half next time, you need to be able to assume that there’s one set of 5 that doesn’t get you sick and one that does, and so on until you get down to the last ingredient.

        It’s a good way to e.g. quickly find the right breaker in the box, because for each device/ socket there’s just one breaker that’s responsible, so flipping half of them gives you an actionable result