Re[8]: cpp и математика
От: B0FEE664  
Дата: 04.08.16 12:50
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Даёт понимание структуры, даёт целый набор готовых математических свойств и алгоритмов.

Давайте конкретно: какие математические свойства и какие из алгоритмов для графов вы используете в коде.

BFE>>>>Единственное, что приходит на ум, это граф переходов конечного автомата.

EP>>>А как же например вездесущие деревья?
BFE>>Деревья — это частный случай, который намного проще.
EP>Тем не менее, это широкий раздел теории графов.
Когда я говорю про графы, я не говорю про деревья.

EP>Это смотря как посмотреть. Список может иметь цикл, а дерево — нет

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

EP>>>и генератор псевдослучайных чисел?

BFE>>Причём тут генератор псевдослучайных чисел?
EP>При том что переходы между seed'ами образуют графы аналогичные графам односвязных списков. И для определения циклов в обоих случаях используются одинаковый алгоритм.
И вы хотите сказать, что где-то в коде, в явном виде хранится этот граф переходов?

EP>Речь не про реализацию, а про то что даже при сортировке возникают те самые графы, пусть и в неявном виде.

Ну, а я о чём? Вы мне в явном виде граф покажите.

BFE>>>>Но и этот граф, опять же, присутствует в неявном виде.

EP>>>Да не важно в каком виде он выражен в коде.
BFE>>Чаще всего тот граф, о котором идёт речь, воображаемый и явно никак не присутствует в коде.
EP>Например ассоциативность тоже в коде явно редко присутствует, тем не менее имеет вполне практическое значение
Для многих алгоритмов распараллеливания вычислений ассоциативность имеет важное практическое значение. Я не вижу тут аналогии.

EP>>> И чем раньше ты распознаешь этот неявный граф, тем раньше расширишь понимание задачи и получишь дополнительный инструментарий.

BFE>>Что это такое — неявный граф?
EP>Здесь это граф который присутствует в задаче, но который ты ещё не распознал.
Т.е. воображаемый граф.

EP>>>>>Естественно можно использовать что-то неявно, не подозревая об опыте и знаниях накопленных столетиями. Но зачем заново пытаться переоткрыть то, что давно изучено? NIH?

BFE>>>>Я не о том, чтобы что-то переоткрывать, а о том, что графы вообще не используются в подавляющем большинстве задач.
EP>>>Да например те же вездесущие социальные сети, там графы в полный рост.
BFE>>Да неужели? Никогда не слышал ни о каких реальных графах в социальных сетях. Эти графы почти всегда воображаемые.
EP>Ну так услышь:
Ну и где там граф? Там нельзя получить граф, как структуру. Нельзя запустить поиск по графу, если я правильно понимаю.

BFE>>а на практике работа с такими графами сводится к работе со списком друзей.

EP>Ага, ещё друзей друзей, ещё поиск пути между двумя людьми
С какой практической целью пользователю мог бы понадобится поиск такого пути?

BFE>>>>Как и любое теоретическое знание, знание графов пользу принести может. Однако, на практике знание графов нужно только если этого требует задача.

EP>>>Так не зная графов, не умея их распознавать, не получится и понять требует ли их задача или нет
BFE>>Граф — это довольно простое построение и не распознать его не получится.
EP>Чтобы распознать его, нужно как минимум знать что это такое.
Если бы это было так, граф бы никогда не был придуман.

EP>Ты выше не распознал граф в генераторе псевдослучайных чисел

Покажите мне в коде генератора граф переходов.

EP>Да и вообще, далеко не всегда лежит на поверхности

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

EP>У меня задачи в основном связанны с CAE, CAD, 3D — и частенько возникают графы в реализации.

Понимаете... Иногда патерны применяются в коде исключительно потому, что программист о них знает.

EP>Более того, писал некоторые алгоритмы для обработки 3D-моделей, которые в том числе применимы и для изображений, так вот — там также возникают графы.

Графы при обработке 3D моделей? В коде? Для чего?

BFE>>>>Количество задач в которых используются графы существенно меньше, чем, скажем, задач, где используется массив.

EP>>>И что с того что реже чем массив? Массив например используется реже чем целые числа
BFE>>Ага. А целое число — это такой вырожденный граф состоящий из одной вершины.
EP>Я этого не говорил.
Это сарказм.

EP>Мой поинт в том, что если графы применимы реже массивов, или что их нет в стандартной библиотеке (хотя внутри они таки используются) — из этого никак не следует что их не нужно знать программисту. Точнее хорошему программисту.

Хорошему программисту много чего надо знать, но это не значит, что всё что он знает ему обязательно пригодиться. На практике один из 10
Автор: gandjustas
Дата: 03.03.12
разворот списка написать может, а вы тут про графы вещаете...

EP>Вот только помимо графов есть много других рабочих инструментов математических структур, которые "мерещатся" в том числе. Это позволяет смотреть на задачу с множества разных сторон, вычленяя отдельные структуры из оригинального ансамбля — тут графы, тут симплексы, тут моноид, тут векторное пространство и т.п.

Уверяю вас, на свете есть много программистов, которые даже не слышали "этих ваших страшных слов". И все они что-то пишут, зарплату получают...
Это мне напоминает одну реальную историю: "-Товарищ преподаватель, вот вы говорите что у вектора есть длина. А толщина у вектора есть?".

BFE>>Собственно единственное реальное применение графа, которое вы указали — это GC. Вероятно графы ещё используются в навигаторах и, быть может, в моделировании электрических схем. В остальных областях графы используются разве что для рисования красивых картинок под грифом "аналитика".

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

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

Ага. Вы ещё теорему Котельникова спрашивайте при приёме на работу web-программиста.
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.