Чем вы пользуетесь для визуализации наборов данных, при решении алгоритмических задач?

 Публичный пост

Около месяца назад я решил подтянуть свои навыки по алгоритмическим задачкам и начал регулярно заниматься на LeetCode по роадмапу.

Первый шаг к решению задачи - это её понимание. Чтобы понять задачу, лучше нарисовать её и решить вручную. Только, чаще всего, приходится рисовать несколько наборов данных для проблемы. Это помогает посмотреть как придуманный алгоритм работает в других случаях и найти какие-то пограничные случаи ломающие логику работы.

Сначала я это делал на листочке, потом перешёл в рисовалку на компьютере. Но я чувствую, что мне не хватает фичей и остается много рутины в процессе изображения данных. В итоге я хотел бы найти софт, который даёт возможность визуализировать и менять набор данных на ходу.

Например, я вписываю одномерный массив чисел. Выбираю нужный вид, например столбики или точки на оси. Вижу визуализированное представление. Нажимаю кнопку отсортировать числа, вижу отсортированный массив.

Нашёл интересные рекомендации в интернете:

  • Python Tutor - позволяет визуализировать всё что происходит в коде для Python, JS, C, C++. В целом выглядит интересно, но нету моего C#, и достаточно ограниченные возможности по визуализации.
  • Набор анимаций по различным алгоритмам - небольшая база интерактивных анимаций по различным вариантам алгоритмов. Позволяет увидеть что происходит с данными в различных структурах. Даёт хорошую базу по визуализации, но мало кастомизации
  • Excel. Пока писал этот вопрос в голову пришла идея попробовать Excel для этой проблемы. Из-за большого количества диаграмм и прямого доступа к данным звучит как неплохой вариант. Но всё равно интересно, если что-то лучше, чем пользуются обитатели клуба.
6 комментариев 👇
Egor Suvorov Программист/преподаватель C++ 27 сентября 2023

Листок и ручка. Или меловая доска. Или маркерная доска.

Чтобы сделать хоть сколько-то разумную визуализацию алгоритма, мне кажется, надо уже понимать задачу и решение. Чтобы знать, какие крутилки выставить, что показывать, что скрывать. И сделать хороший визуализатор — отдельная задача, имеющая мало отношения к пониманию задачи. Больше про UX, что ли.

Например, в алгоритме Дейкстры можно визуализировать честно сам алгоритм, а можно визуализировать его похожесть с обходом в глубину и идти по всем рёбрам одновременно. И вот второе даст куда больше понимания.

А то что рутина — так в этом и смысл. Посмотреть на задачу с десятка-сотни сторон, вдумчиво, неторопливо, изучая каждый пример. Чтобы интуицию выработать.

  Развернуть 1 комментарий

@yeputons, да, всё верно, перед тем как визуализировать в программе, нужно исписать тонну бумаги, чтобы тупо понять. По-другому это не работает.

А визуализация - это уже вишенка на торте.

  Развернуть 1 комментарий

Захотел я как-то визуализировать работу алгоритма Дейкстры. Но не просто, а на реальных данных - построение маршрута по Калининграду:

Маршрут по Калининграду
Маршрут по Калининграду

Взял карту. Проставил на ней ручками over 700 точек. Нанял человека, который проставил этим точкам координаты. После написал примерно 380 строк кода для того, чтобы система сама могла ставить точки на карте в соответствии с координатами и работой алгоритма.

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

Разве что вот visualgo периодически помогает.

  Развернуть 1 комментарий
Никита Сороковиков Программист, математик 27 сентября 2023

https://diagrams.github.io/
Это не готовое решение для визуализации данных, а просто конструктор для создания диаграмм, но я им пользуюсь постоянно, когда нужно нарисовать что-то из входных данных.
У меня есть репозиторий, в который я закидываю сложные схемы, но в последнее время забываю: https://github.com/d86leader/diagrams-collection
А ещё куча примеров откуда потырить код есть здесь: https://diagrams.github.io/gallery.html

  Развернуть 1 комментарий
Anton Lebedevich Data Engineer | Machine Learning Engineer | AB-testing 27 сентября 2023

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

  Развернуть 1 комментарий

PowerBI. Удивительный инстумент, даже не подумаешь, что сделали его в современном MS. Ну а если не сработает, то ELK. Это уже из категоии супер-тяжеловесов.

Хотя, как мне сказал один раз директор очень крупной компании "молодой человек, никогда недооценивайте количесво бизнесов, которые работают на Excel"

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб