Здравствуйте, B0FEE664, Вы писали:
BFE>>>>>Зачем графы? Можно всю жизнь проработать программистом и ни разу не использовать граф в явном виде.
EP>>>>Так математика как раз и делает неявные структуры явными,
BFE>>>Но это ничего не даёт на практике.
EP>>Именно что даёт.
BFE>Что именно?
Даёт понимание структуры, даёт целый набор готовых математических свойств и алгоритмов.
BFE>>>Единственное, что приходит на ум, это граф переходов конечного автомата.
EP>>А как же например вездесущие деревья?
BFE>Деревья — это частный случай, который намного проще.
Тем не менее, это широкий раздел теории графов.
EP>>Или например односвязные списки
BFE>А список проще дерева.
Это смотря как посмотреть. Список может иметь цикл, а дерево — нет
EP>>и генератор псевдослучайных чисел?
BFE>Причём тут генератор псевдослучайных чисел?
При том что переходы между seed'ами образуют графы аналогичные графам односвязных списков. И для определения циклов в обоих случаях используются одинаковый алгоритм.
EP>>Да даже сложность кода меряют через характеристику графа https://en.wikipedia.org/wiki/Cyclomatic_complexity
BFE>И что это даёт на практике?
Метрика сложности кода. Позволяет найти код с запашком в готовом проекте, либо автоматическая верификация нового.
EP>>Например сортировка часто используется? А там те самые графыАвтор: Evgeny.Panasyuk
Дата: 20.10.14
.
BFE>И такая реализация где-то используется?
Речь не про реализацию, а про то что даже при сортировке возникают те самые графы, пусть и в неявном виде.
BFE>>>Но и этот граф, опять же, присутствует в неявном виде.
EP>>Да не важно в каком виде он выражен в коде.
BFE>Чаще всего тот граф, о котором идёт речь, воображаемый и явно никак не присутствует в коде.
Например ассоциативность тоже в коде явно редко присутствует, тем не менее имеет вполне практическое значение
EP>> И чем раньше ты распознаешь этот неявный граф, тем раньше расширишь понимание задачи и получишь дополнительный инструментарий.
BFE>Что это такое — неявный граф?
Здесь это граф который присутствует в задаче, но который ты ещё не распознал.
EP>>>>Естественно можно использовать что-то неявно, не подозревая об опыте и знаниях накопленных столетиями. Но зачем заново пытаться переоткрыть то, что давно изучено? NIH?
BFE>>>Я не о том, чтобы что-то переоткрывать, а о том, что графы вообще не используются в подавляющем большинстве задач.
EP>>Да например те же вездесущие социальные сети, там графы в полный рост.
BFE>Да неужели? Никогда не слышал ни о каких реальных графах в социальных сетях. Эти графы почти всегда воображаемые.
Ну так услышь:
https://developers.facebook.com/docs/graph-api/overview
BFE>а на практике работа с такими графами сводится к работе со списком друзей.
Ага, ещё друзей друзей, ещё поиск
пути между двумя людьми
BFE>>>Как и любое теоретическое знание, знание графов пользу принести может. Однако, на практике знание графов нужно только если этого требует задача.
EP>>Так не зная графов, не умея их распознавать, не получится и понять требует ли их задача или нет
BFE>Граф — это довольно простое построение и не распознать его не получится.
Чтобы распознать его, нужно как минимум знать что это такое.
Ты выше не распознал граф в генераторе псевдослучайных чисел

Да и вообще, далеко не всегда лежит на поверхности
EP>>Или тебе приходят разжёванные задачи вида "вот тут примени вектор, вот тут граф, вот тот обход в ширину"
BFE>Последние десять лет все задачи сводились примерно к таким: вот тут у нас есть несколько потоком изображений с камер, надо надо в реальном времени убрать с них все искажения вносимые оптикой. Или. Вот мы тут девайс с моторчиками спаяли, надо обеспечить плавность и согласованность их работы, написать графический интерфейс, удалённое управление, мониторинг, обеспечить нескольких режимов ассистирования, какие нужны — спросишь у операторов.
У меня задачи в основном связанны с CAE, CAD, 3D — и частенько возникают графы
в реализации.
Более того, писал некоторые алгоритмы для обработки 3D-моделей, которые в том числе применимы и для изображений, так вот — там также возникают графы.
BFE>>>Количество задач в которых используются графы существенно меньше, чем, скажем, задач, где используется массив.
EP>>И что с того что реже чем массив? Массив например используется реже чем целые числа
BFE>Ага. А целое число — это такой вырожденный граф состоящий из одной вершины.
Я этого не говорил. Мой поинт в том, что если графы применимы реже массивов, или что их нет в стандартной библиотеке (хотя внутри они таки используются) — из этого никак не следует что их не нужно знать программисту. Точнее хорошему программисту.
EP>>Да даже если допустить что графы встречаются хотя бы в 2% задач — этого уже с головой достаточно для того чтобы их изучить хотя бы на базовом уровне, так как рано или поздно такая задача обязательно попадётся.
BFE>У меня такое впечатление, что как человек взявший в руки молоток во всём видит гвозди, так и человеку изучившему теорию графов во всем мерещатся графы.
Вот только помимо графов есть много других
рабочих инструментов математических структур, которые "мерещатся" в том числе. Это позволяет смотреть на задачу с множества разных сторон, вычленяя отдельные структуры из оригинального ансамбля — тут графы, тут симплексы, тут моноид, тут векторное пространство и т.п.
BFE>Собственно единственное реальное применение графа, которое вы указали — это GC. Вероятно графы ещё используются в навигаторах и, быть может, в моделировании электрических схем. В остальных областях графы используются разве что для рисования красивых картинок под грифом "аналитика".
Ещё в компиляторах, системах сборки, пакетных менеджерах, да и вообще практически везде. А в остальном да, не используются
Граф это настолько базовая структура, считай связь между чем либо, что встречается повсеместно. Тут разве что басня Крылова на ум приходит про
ГрафДуб