Нахождение глубины элемента в бинарном дереве кортежейPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Нахождение глубины элемента в бинарном дереве кортежей

Сообщение Anonymous »


У меня есть две функции, которые работают с кортежем (x, y) :

def f1(x,y): вернуть (х, х + у) защита f2(x,y): вернуть (х + у, у) Принимая (1,1) в качестве начального кортежа, становится ясно, что две функции могут образовывать двоичное дерево, например

(1,1) -> (1,2),(2,1), а затем дальнейшее ветвление и т.д.

Мой вопрос: есть ли способ определить глубину произвольного элемента (a,b) или сделать вывод, что его не существует? Вот кое-что, что я нашел на данный момент:
[*]Дерево симметрично, например f2(f2(1,1)) = (1,3) и f1(f1(1,1)) = (3,1) ). [*]Неоднократное применение f1 к (1,1) дает преимущество, которое выглядит как (1,n). Тогда применение f2 означает, что все, что имеет форму (n, n+1), находится в дереве и имеет глубину n [*]Если в (n,m) оба четны или кратны друг другу, то этот узел отсутствует в дереве [*]Наконец, это похоже на (n,m), если m > n и m = k*n + 1 или m = k*n - 1 для целого числа k, то элемент находится в дереве и его глубину можно вычислить. Эта идея исходит из того факта, что (n, n+1) находится в дереве.
Чего я пытаюсь избежать, так это, например, создания дерева и использования DFS. Это также поднимает другие вопросы, например, знать, когда прекратить генерацию элементов (чтобы проверить, «прошли» ли вы место, где может находиться входной кортеж).
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»