Рубрики
Без рубрики

Визуализация рекурсионного дерева с анимацией в Python

Эй, все, я надеюсь, что у всех все хорошо. Это будет мой первый пост на dev.to. Рекурсия … Теги с Python, начинающими, визуализация, алгоритмы.

Эй, все, я надеюсь, что у всех все хорошо. Это будет мой первый пост на dev.to.

Рекурсия является важной темой в алгоритмах. У большинства новичков есть проблемы с пониманием рекурсии о том порядке, в котором функциональные вызовы проходят параметры и так далее. Итак, я построил простой пакет Python под названием Рекурсионный визуализатор который может быть полезной учебной помощи, а также инструмент отладки для понимания рекурсии.

Давайте сначала установим пакет: Единственная зависимость для рекурсионного визуализации – это график, который вы можете скачать с здесь

  • Скачать Graphviz Binary
  • Добавьте BIN Graphviz на путь вручную или добавив следующую строку в скрипте. Измените каталог установки в соответствии с вашим путем установки
# Set it to bin folder of graphviz  
os.environ["PATH"] += os.pathsep +  'C:/Program Files (x86)/Graphviz2.38/bin/'  

Самый простой способ установить Рекурсионный визуализатор Пакет из пейпина

pip install recursion-visualiser

Предпочтительным способом импорта класса декоратора из пакета является как:

from visualiser.visualiser import Visualiser as vs

Теперь давайте нарисуем дерево рекурсиона для серии Fibonacci. Вот простая функция FIBONACCI.

def fib(n):  
    if n <= 1: 
        return n 
    return fib(n - 1) + fib(n - 2)  

def main():
    # Call function
    print(fib(6))

if __name__ == "__main__":
    main()

Так как мы можем визуализировать FIB (6)?

Это так просто, как добавление декоратора. Вот шаги:

  1. Импортировать визуализатор рекурсии, добавив эту строку
 from visualiser.visualiser import Visualiser as vs
  1. Добавить декоратор
@vs(node_properties_kwargs={"shape":"record","color":"#f57542", "style":"filled", "fillcolor":"grey"})

Я поставил node_properties_kwargs для стилизации узла.

  1. Модифицировать FIB пройти весь аргумент как ключевые слова
 def fib(n):
    if n <= 1:
        return n
    return fib(n=n - 1) + fib(n=n - 2)
  1. Позвоните make_animation () метод
vs.make_animation("fibonacci.gif", delay=2)

Вот как наш последний код будет выглядеть так:

# Author: Bishal Sarang
# Import Visualiser class from module visualiser
from visualiser.visualiser import Visualiser as vs

# Add decorator
# Decorator accepts optional arguments: ignore_args , show_argument_name, show_return_value and node_properties_kwargs
@vs(node_properties_kwargs={"shape":"record", "color":"#f57542", "style":"filled", "fillcolor":"grey"})
def fib(n):
    if n <= 1:
        return n
    return fib(n=n - 1) + fib(n=n - 2)

def main():
    # Call function
    print(fib(n=6))
    # Save recursion tree to a file
    vs.make_animation("fibonacci.gif", delay=2)

if __name__ == "__main__":
    main()

Вот как выглядит анимация: также дерево рекурсиона сохраняется как:

Вот ссылка на Github на пакет: https://github.com/bishAsarang/recursion-tree-visualizer.

Вот еще несколько примеров по проблеме изменения монет, фибоначчи, построение двоичной строки, подмножества и комбинации проблем: https://github.com/bishalsarang/recursion-tree-visualizer/tree/master/examples. Надеюсь, вы наслаждаетесь пакетом. Увидимся в следующем посте.

Оригинал: “https://dev.to/bishalsarang/visualize-recursion-tree-with-animation-in-python-5357”