Ответы пользователя по тегу Графы
  • В чем проблема в коде работы с графом?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Зачем делать безсмысленный makeStep? Пускай он возвращает булево значение.

    boolean makeStep(Graph &graph, ValuesTable &table) { .... }


    Не было отрицательных свойств среди вершин - значит пускай вернет true.
    Тогда будет стоп алгоритма. И не надо будет
    делать дополнительных пере-расчетов.
    Ответ написан
    7 комментариев
  • Как построить путь из одной координаты в другую, используя промежуточные координаты из списка?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Задача выглядит как поиск кратчайшего пути в графе. Но решать в географических координатах
    сложно т.к. надо учитывать кривизну планеты Земля. На эту тему есть куча формул и еще лучше,
    куча систем координат и API.

    Но я-бы просил автора нарисовать на картинке как это он себе видит. Возможно тут либо все очень
    проще. Либо очень сложнее.
    Ответ написан
  • Теория графов и нейронные сети в распознавании объектов - в чем преимущество графов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я попробую рассказать своё видение проблемы. Я не уверен что я прав но напишу как мне кажется.

    Есть две модели представления нейронных сетей.

    1) Матрицы (иногда называют тензоры). Имеют аппаратную реализацию в новых TPU (Tensor processor unit). Кажется Гугл сейчас продает услугу аренды таких сетей для задач обучения. Подходят для плотного заполнения нейронных слоём когда нейроны связаны каждый-с-каждым. При этом даже если связи нет (коэффициентик равен 0.0) тем не менее пространство все равно используется и этот ноль участвует в расчете.
    Расчет обучения (как я его себе понимаю) должен сводится к перемножению входного векртора на всю полседовательность матриц. И также к применению функции активации между слоями. Имеено за счет функции активации и идет обучение (там есть своя доказательная база) и идет декомпозиция на слои. Если бы функции не было - тогда можно было-бы все слои (константы) схлопнуть в 1 большую матрицу. Вот так и бегает умножение туда-сюда. Обучение - проверка ошибок. Коррекция. И снова обучение.

    2) Графы. Это вырожденный вариант матриц когда нулей оооочень много то чтоб зря не меремножать нули можно модель вычислений представить в виде графов. Математически это дает экономию в виде пропуска ненужных вычислений. И должна быть экономия в виде памяти для коэффициентов каждого слоя. На практике представить граф компактно очень сложно. Если кто из вас делал свои графы - то вы знаете что жрут они память как в не в себя, и никогда не угадаешь сколько надо выделить под вершину или под ребро чтоб не было пере-аллокаций и потерь.

    Если вы хоть раз открывали учебники по НС типа Каллана или Хайкина то там с первых страниц идет описание
    персептрона или 1-слойного нейрона в виде рисунка со стрелочками. Это и есть граф. Таки рисунки любят преподаватели в универах и всякие теоретики.

    В старых математических пакетах (еще в 80х годах) есть целые мат-библиотеки которые работают с разреженными матрицами (sparsed matrices). Это - тоже наивные попытки создать экономию. Такая дырявая матрица как раз отражает граф где вершины - это столбцы и строки а рёбра - это ненулевые коэффициенты.
    Реализаций их - целая куча. Математики любят решать системы дифуров в таких структурах. Там своя специфика. Тоже есть много нулей. Тоесть между графом и дырявой матрицей есть полиморфизм.

    Есть поддержка таких дырявых структур (Vector.sparse) и в биг-дате (Spark). Тоже для нужд ML.

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

    Все что я написал это просто моё чортово ИМХО. И не стоит это воспринимать за правду.
    Ответ написан
    2 комментария
  • Как самостоятельно изучать теоретическую информатику?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Скорее всего - никак. Информатика (и вычислительная техника) это все практические науки. Их надо изучать параллельно делая что-то руками. Все что вы перечислили. Теория игр. Криптография. Должно быть подкреплено реальным проектом где это используется.

    В противном случае - эти знания бесполезны и забудуться. Это я по себе говорю. Такой мой опыт.
    Ответ написан
    Комментировать
  • Как правильно пропарсить лабиринт в граф?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне кажется что ничего не нужно парсить. Можно создать интерфейс графа поверх лабиринта.
    Вершины есть. Ребра есть. Все готово для поиска путей и доказательства достижимостей.

    Можно только добавить дополнительно на все ребра и вершины возможность ставить метки.
    Это как раз для графовых алгоритмов.
    Ответ написан
    Комментировать
  • Как визуализировать графы в Java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Посмотри утилиту graphviz. Она позволяет красиво оформлять текстовые файлы с вершинами и ребрами в картинки.

    Посмотри графический редактор yEd. Кажется у него были плагины и API для внешней разработки.
    Ответ написан
    Комментировать
  • Почему алгоритм дейкстры не работает с ненаправленными графами?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если под классического Дейкстру вы подсунете граф с циклами - то он зациклиться и никогда не выдаст ответа.

    Что поделаешь. Таков он есть алгоритм. Но с другой стороны. Зачем вам решать задачу поиска кратчайших маршрутов на циклах? Поищите реальный пример из жизни и вы поймете что либо абстракция "не та" либо не тот алгоритм.
    Ответ написан
  • Где можно найти нормальный учебник по графам?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Новиков - Дискретная Математика для программистов.
    Оре - Теория Графов (это классика которую все должны были зубрить в универе)
    Ответ написан
    Комментировать