Какая книга лучше всего подходит для изучения дискретной математики?

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

Ответы (11)

Конкретная математика: основа компьютерных наук, написанная самим Дональдом Кнутом!

Книжная обложка

Это одна из самых занимательных книг, которые я читал в старшей школе, со всеми ее граффити на полях и болтовней... это действительно заставляет вас хотеть выполнять упражнения!
Я только что закончил читать это в энный раз; это действительно интересный способ заниматься математикой.
Эта книга требует существующих знаний в области дискретной математики, которые выходят далеко за рамки того, что нужно знать программисту. На самом деле, я считаю, что эта книга предназначена для ученых-компьютерщиков, обучающихся на старших курсах программы бакалавриата или даже начинающих программу магистратуры.
@Thomas Owens: На самом деле, это была попытка взять программу, как вы описываете, которая уже существовала в Стэнфорде, и сделать ее более доступной. Так говорится в предисловии ко второму изданию.
Я не говорю, что это плохая книга. Но это не подходит для кого-то с ограниченными знаниями в области дискретной математики. Он у меня есть, я прочитал его и решил некоторые проблемы. Но если у вас нет знаний в области дискретной математики и математических вычислений, вам будет не по себе — и то, и другое необходимо для полного понимания содержания книги.
Разные книги требуют разных предпосылок и нравятся разным людям. Нет книги, чтобы управлять ими всеми. Возможно, вам придется изучить некоторые темы из одной книги, а некоторые из других. НЕТ "ОДНОЙ" книги. Не может быть.
Это правда. Но я по-прежнему придерживаюсь своего утверждения, что вы не можете изучать дискретную математику по этой книге, поскольку обязательным условием для этой книги является знание основных концепций дискретной математики. Эта книга отвечает на вопрос, заданный в заголовке, но не принимает во внимание основную часть вопроса, где спрашивающий ищет книгу для развития базовых знаний по дискретной математике, которые могут потребоваться для более глубокого понимания алгоритмов.
Хотя проголосовали за «Лучшее» и, безусловно, это настоящий GEM, но я бы не рекомендовал его новичкам, даже тем, кто знает основы. Вы должны хорошо разбираться в математике, чтобы усвоить то, что написано в книге. Я обычный (ниже среднего по математике) разработчик программного обеспечения, и я много боролся с этой книгой. Вместо этого я переключился на книгу Розена и решил выбрать ее позже. Я все еще не понимаю, какую реальную ценность все это принесет в мою карьеру (я нахожу это интересным, но не легким). Если вы начнете читать эту книгу, пожалуйста, создайте группу или что-нибудь, к чему могут присоединиться люди, я знаю еще одного, кто хочет попробовать
Есть ли у кого-нибудь предложение книги, если вы кто-то, кто открыл эту книгу, и на первой странице новая она была выше их головы? С чего начать?
@ThomasOwens: я прочитал эту книгу в старшей школе (11-й класс), не имея опыта работы с дискретной математикой. Это просто требует некоторого времени, терпения и мотивации; все необходимое уже есть в книге. Есть части книги, которые являются продвинутыми (и которые я пропустил в то время), но обычно они находятся ближе к концу каждой главы и удобно отмечены комментариями на полях. Кроме того, первая глава больше похожа на тизер, так что ничего страшного, если вы не будете следить за всем там и начнете со второй главы.
Подходит ли эта книга для начинающих (для студентов, изучающих информатику?)
@Создатель Да, это так.
@PratikDeoghare- Это совсем не соответствует учебной программе, есть хорошее объяснение для продвинутых тем (доступны только некоторые), и нет места для основных тем.
Какой учебный план?
В предисловии к этой книге прямо говорится, что она не является заменой учебника по дискретной математике. Это ужасный ответ на этот вопрос.
Я проработал часть этой книги после прохождения курса дискретной математики, и мне все равно было сложно. Это определенно не лучшая книга для начинающих.

Знание дискретной математики необходимо, чтобы научиться доказывать правильность и определять сложность алгоритмов и структур данных. Вас научат этому в книгах по Algo/DS, но вы можете получить математические навыки, только практикуя только дискретную математику.

Книга Кнута очень хороша для этого. Но ИМХО, он вам понадобится только для расширенных доказательств в DS/Algorithms.

Для новичка было бы здорово пройтись по «Гримальди» http://www.amazon.com/Discrete-Combinatorial-Mathematics-Applied-Introduction/dp/0201199122 , а затем быстро перейти к алгоритмам.

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

Помните, дискретная математика не учит вас, как разрабатывать алгоритмы или структуры данных. Этого можно достичь, только практикуя проблемы с алгоритмами на topcoder, acm icpc, spoj и т. д. и читая книги по Algos/DS или курсы по ним.

Мои 2 цента.

это действительно очень хороший совет.

Очень хорошим учебником по дискретной математике для студентов бакалавриата является книга Кеннета Розена под названием «Дискретная математика и ее приложения» .

В книге приведены решения половины проблем. Вы также можете приобрести Руководство по решениям для учащихся . Я не владею ею, но я подозреваю, что она либо дает ответы на другую половину вопросов, либо предоставляет пошаговое руководство по решению проблем (книга дает только окончательные ответы с минимальными объяснениями этих ответов). ).

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

Глядя на книгу Розена, на которую вы ссылаетесь, многие рецензенты жалуются, что это версия в мягкой обложке, и что эта версия на самом деле представляет собой совершенно другой текст, чем текст в твердом переплете, используемый в большинстве курсов. Вы имели в виду одобрить книгу в мягкой или твердой обложке?

Есть много разных областей дискретной математики и много хороших книг.

существует теория графов от Diestel, у которой есть бесплатная версия в формате pdf, доступная по адресу

diestel-graph-theory.com

есть генерирующая функционалология от Уилфа, бесплатная версия в формате pdf на

math.upenn.edu/~wilf/DownldGF.html

Другие хорошие книги включают перечислительную комбинаторику 1 и 2 Ричарда П. Стэнли (книга, достаточно плотная, чтобы в каждой из них было хотя бы по одному курсу анализа и алгебры).

при этом для более вводных экспозиций с точки зрения ожидаемой математической зрелости я бы предложил поискать в Интернете и просмотреть различные конспекты лекций типа «введение в комбинаторику» или «математика для компьютерных ученых». Я обнаружил, что заметки MIT OCW «Математика для компьютерных ученых» были довольно хорошими, когда я просматривал их несколько лет назад.

ocw.mit.edu/courses/электротехника-и-информатика-наука...

есть ссылка на записи лекций. В нем есть действительно забавные моменты. Один из моих любимых «... всякий, кто так говорит, не прав, и вы должны высмеивать их, пока они не заплачут».

Кроме того, если вы хотите еще глубже погрузиться в дискретную математику/комбинаторику, стоит изучить немного математических основ в других областях математики. Комплексный анализ, реальный анализ (на уровне хотя бы бэби-рудина, а может быть, и до функционального анализа), может быть, какая-то вероятность до уровня формулировки его теории меры, и хотя бы капелька абстрактной алгебры. Затем вы можете заняться такими вещами, как изучение комбинаторики случайных процессов (отлично подходит для анализа рандомизированных алгоритмов) и рассмотреть интересные проблемы, такие как перколяция.

Возможно, есть и другие вещи, которые я должен предложить, но суть в том, что дискретная математика доступна без особого фона, но также вознаграждает вас за обогащение этого математического фона некоторыми удивительно красивыми вещами, которые 1) потрясающие и забавные 2) полезные.

Мне очень нравится дискретная математика Нормана Биггса . Я бы не рекомендовал второе издание. Лучше приобретите первое издание («исправленное» первое издание, если сможете). Текст претендует на самодостаточность (мне так кажется).

Поскольку в Интернете не так много информации об этом издании текста (предварительный просмотр на Amazon — это второе издание), вот схема:

Часть 1: Числа и счет

  1. Целые числа (упорядочение, рекурсия, индукция, делимость, НОД, факторизация)
  2. Функция и подсчет (сюръекции, инъекции, биекции, принцип сортировки, конечное против бесконечного)
  3. Принципы счета (функция Эйлера, принцип сложения, слова, перестановки)
  4. Подмножества и планы (биномиальная теорема, принцип решета, планы, т -конструкции)
  5. Разбиение (отношения эквивалентности, распределения, полиномиальные числа, классификация перестановок)
  6. Модульная арифметика (сравнения, Z м , циклические конструкции, латинские квадраты)

Часть 2: Графики и алгоритмы:

  1. Алгоритмы и эффективность (доказательство правильности, О запись, сравнение, сортировка)
  2. Графы (изоморфизм графов, валентность, пути, циклы, деревья, раскраска, жадный алгоритм)
  3. Деревья, сортировка, поиск (подсчет листьев, алгоритмы сортировки, остовные деревья, задача MST, поиск в глубину, поиск в ширину, поиск кратчайшего пути)
  4. Двудольные графы (отношения, раскраски ребер, паросочетания, максимальные паросочетания, трансверсали)
  5. Орграфы, сети, потоки (критические пути, потоки и разрезы, теорема о максимальном потоке и минимальном разрезе, алгоритм разметки)
  6. Рекурсивные методы (линейная рекурсия, рекурсивное деление пополам, рекурсивная оптимизация, динамическое программирование)

Часть 3: Алгебраические методы:

  1. Группы (аксиомы, изоморфизмы, циклические группы, подгруппы, смежные классы)
  2. Группы перестановок (определения, орбиты, стабилизаторы, размер/количество орбит, представление групп перестановками)
  3. Кольца, поля, многочлены (алгоритм деления, алгоритм Евклида, факторизация)
  4. Конечные поля (порядок, конструкция, теорема о примитивных элементах, конечная геометрия, проективные плоскости, существование)
  5. Исправление ошибок (слова, коды, ошибки, линейные коды, циклические коды)
  6. Производящие функции (степенные ряды, дроби, биномиальная теорема, линейная рекурсия)
  7. Разделы положительного целого числа (сопряженные разделы, производящие функции, загадочное тождество)
  8. Симметрия и счет (циклическая и двугранная симметрия, трехмерная симметрия, неэквивалентные раскраски, раскраски и производящие функции, теорема Полиа)
Почему предпочтение отдается первому изданию?

Мне очень нравится «Дискретная математика» Росса и Райта:введите описание изображения здесь

Математическое мышление: решение задач и доказательства.

Джон П. Д'Анджело, Дуглас Б. Уэст.

Доступно на Амазонке .

Предполагается, что это введение в математические доказательства. Таким образом, он не ограничивается дискретной математикой. Но это очень хорошая работа для дискретной математики. Вы также увидите некоторые доказательства в реальном анализе; но вы можете сосредоточиться только на дискретной части, игнорируя это.

Мне очень помогла книга «Элементы дискретной математики» К. Лью Лю .

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

Лучшей книгой для изучения дискретной математики является " Дискретная математика и структуры " Сатиндера Бала Гупты . Она опубликована издательством University Science Press . Язык книги очень прост. Она содержит сотни решенных и нерешенных задач с подсказками.

Основы дискретных математических структур, 3-е издание. Он написан в соответствии с ACM-Curriculum, содержит множество вопросов уровня GATE и написан профессором компьютерных наук.

"написано профессором компьютерных наук." - вам следовало бы открыть, что это книга, которую вы сами написали.