[торможу] Алгоритм отрисовки дерева

yolki

у каждого узла 4 направляющих - up/down/left/right
дерево растёт вниз и вправо.
как бы его на плоскости изобразить, чтобы компактно, без наложения узлов, без пересечения дуг и чтобы вправо-вниз было именно вправо и вниз

vall

или переформулируй или нарисуй, я прочитал четыре раза и не понял.

yolki

vall

ну ты что-то такое совсем хитрое хочешь, только какой-то итеративный упаковщик такое нарисует. =)
можно скажем потребовать что каждое подерево вписывается в прямоугольник
и рекурсивно расчитывать размеры прямоугольников и отрисовывать

yolki

уже рассчитываю, но не клеится чего-то

a10063

сколько проходов?
и компактность по ширине или высоте?

yolki

в смысле проходов?
компактность по ширине.

a10063

в смысле проходов?
проходов по дереву
можно, например, размышлять, как отрисовать такое в один проход

yolki

типа да. в один проход.

a10063

рекурсия (алгоритм для поддерева, находимся в узле):
рисуем узел
рисуем левое поддерево
сдвигаемся по высоте на высоту левого поддерева + дельта и рисуем правое поддерево

ppplva

Наверное, надо всюду левое заменить на правое ?
Еще интересно добиться минимальности по высоте (среди всех деревьев, минимальных по ширине).

a10063

Наверное, надо всюду левое заменить на правое ?
точно. я перепутал их потому, что мысленно иду от корня, а там на развилке то, что идет в право - левое поддерево, а что вниз - правое
спасибо
Еще интересно добиться минимальности по высоте (среди всех деревьев, минимальных по ширине).

+1

yolki

в общем, что-то реализовалось и этого пока хватит.
конечно, можно и дальше компактифицировать, но тут нужно сложную теорию вкладывать

vall

боюсь эта штука в общем случае вполне может оказаться NP-полной

yolki

угу. как и большинство задач на упаковку/расстановку

vall

да, недавно доказали что тетрис NP-полон =)

2354570

А неочевидно? =)

vall

ну давай докажи, сведи какую-нить NPC к тетрису.
как я понял фигурки и ширина стакана фиксированы стандартными, так что сведение явно нетривиальное.

2354570

Окей.
Раз пошла такая пьянка, будь добр - сформулируй задачу "Тетрис".

vall

а нет, там ешё можно задавать начальное состояние стакана и заузить его, так что всё не так сложно.
http://www.liacs.nl/~kosters/tetris/tot.pdf

vall

прочитай в статье правила, а доказательство не читай =)

2354570

Посмотрел =) Конкретно люди заморочились
Я, просто, честно говоря, немного о другом думал и вот там сводимость была бы очень простой...
Оставить комментарий
Имя или ник:
Комментарий: