Итак, в личном проекте, над которым я работал, я столкнулся со следующей проблемой, и я изо всех сил пытался найти решение, так как мои математические навыки не очень хороши.
Допустим, у вас есть следующее дерево чисел a b c d e f g h:
a
/ \
b c
/ | |
g d f
| |
h e
Каждый шаг вниз по дереву означает, что следующее число больше предыдущего. Так что c или c
Допустим, у нас есть упорядоченный список чисел, например [a, b, c, d, e]. Как нам написать алгоритм, который проверяет, является ли порядок чисел в списке (при условии, что L [i]
I. E, оба [a, c, b, d, e] и [a, b, d, c, e] верны, но [c, a, b, d, e] нет (так как мы знаем, что c> а, кроме прочего, относительно того, как устроены другие числа).
Ради алгоритма, давайте предположим, что наш доступ к дереву является функцией provbly_greater (X, Y), который возвращает true, если дерево знает, что число больше другого числа. И.Е. provbly_greater (a, d) = True, но proviable_greater (d, f) = False. Естественно, если число доказуемо не больше, оно также возвращает false.
Это , а не домашнее задание, я достаточно много раз обрисовал проблему, чтобы прояснить ее, но решение этой проблемы весьма важно для того, что я пытаюсь сделать. Я сделал несколько попыток взломать его сам, но все, что я придумал, оказалось недостаточным для какого-то крайнего случая, о котором я узнаю позже.
Заранее спасибо.