Re[7]: cpp и математика
От: Evgeny.Panasyuk Россия  
Дата: 04.08.16 11:09
Оценка:
Здравствуйте, 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. Вероятно графы ещё используются в навигаторах и, быть может, в моделировании электрических схем. В остальных областях графы используются разве что для рисования красивых картинок под грифом "аналитика".


Ещё в компиляторах, системах сборки, пакетных менеджерах, да и вообще практически везде. А в остальном да, не используются

Граф это настолько базовая структура, считай связь между чем либо, что встречается повсеместно. Тут разве что басня Крылова на ум приходит про ГрафДуб
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.