Texts in Computer Science
Series Editors
David Gries
Department of Computer Science, Cornell University, Ithaca, NY, USA
Orit Hazzan
Faculty of Education in Technology and Science, TechnionIsrael Institute of Technology, Haifa, Israel
More information about this series at http://www.springer.com/series/3191 Titles in this series now included in the Thomson Reuters Book Citation Index!
'Texts in Computer Science' (TCS) delivers high-quality instructional content for undergraduates and graduates in all areas of computing and information science, with a strong emphasis on core foundational and theoretical material but inclusive of some prominent applications-related content. TCS books should be reasonably self-contained and aim to provide students with modern and clear accounts of topics ranging across the computing curriculum. As a result, the books are ideal for semester courses or for individual self-study in cases where people need to expand their knowledge. All texts are authored by established experts in their fields, reviewed internally and by the series editors, and provide numerous examples, problems, and other pedagogical tools; many contain fully worked solutions.
The TCS series is comprised of high-quality, self-contained books that have broad and comprehensive coverage and are generally in hardback format and sometimes contain color. For undergraduate textbooks that are likely to be more brief and modular in their approach, require only black and white, and are under 275 pages, Springer offers the flexibly designed Undergraduate Topics in Computer Science series, to which we refer potential authors.
Sergei Kurgalin and Sergei Borzunov
The Discrete Math Workbook
A Companion Manual Using Python
2nd ed. 2020
Sergei Kurgalin
Voronezh State University, Voronezh, Russia
Sergei Borzunov
Voronezh State University, Voronezh, Russia
ISSN 1868-0941 e-ISSN 1868-095X
Texts in Computer Science
ISBN 978-3-030-42220-2 e-ISBN 978-3-030-42221-9
https://doi.org/10.1007/978-3-030-42221-9
Springer Nature Switzerland AG 2020
This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed.
The use of general descriptive names, registered names, trademarks, service marks, etc. in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant protective laws and regulations and therefore free for general use.
The publisher, the authors and the editors are safe to assume that the advice and information in this book are believed to be true and accurate at the date of publication. Neither the publisher nor the authors or the editors give a warranty, expressed or implied, with respect to the material contained herein or for any errors or omissions that may have been made. The publisher remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
This Springer imprint is published by the registered company Springer Nature Switzerland AG
The registered company address is: Gewerbestrasse 11, 6330 Cham, Switzerland
Preface to the Second Edition
The second edition of the book comes out after a short period of time compared to the first one, which we believe is connected with the increased interest in discrete mathematics among specialists in the field of computer science. Now we use Python as a programming language. The choice of this language is determined by its universality and rapid growth in popularity in the world. In our opinion, Python is good enough for teaching methods of design and analysis of algorithms.
We have kept the structure of the material the same in the second edition: each chapter consists of a theoretical part containing basic definitions, theorems, and typical schemes of problem-solving, then we give problems for solving in a classroom led by a teacher or for self-study.
More than 50 new problems with solutions and answers have been added to the book, as well as control questions for each chapter to check the knowledge of basic definitions and theoretical facts. In a number of cases clarifying comments were made or observed for inaccuracies corrected in solutions and proofs.
Acknowledgments
The authors would like to express their grateful acknowledgment to all who expressed their wishes or suggested ways to improve the book after the publication of the first edition.
We are grateful to our colleagues Alexey Bukhovets, Valeria Kaverina, Alexander Loboda, Peter Meleshenko, and Mikhail Semenov for their useful discussions, advices, and critical comments. Also, at Springer, we would like to thank Senior Editor, Wayne Wheeler, and Associate Editor, Simon Rees.
Nikolai Paukov helped us a lot in debugging and checking the program code of the algorithms presented in the book.
All remaining errors and inaccuracies, of course, remain on the authors' conscience.
Sergei Kurgalin
Sergei Borzunov
Voronezh, Russia
January 2020
Preface to the First Edition
Rapid development of information and communication technologies is a characteristic feature of the current time period. Training specialists who meet the requirements of the time in the field of such technologies leads to the necessity of paying special attention to their mathematical education. Herewith it is desirable to shape knowledge presented in the form of a practical part of mathematical courses in such a way that after performing these tasks students get the required competencies. One of the mathematical courses which is taught, as a rule, in early semesters is the course of discrete mathematics. A number of general courses and specialist disciplines included in the cycle of specialist training in the field of information technologies are based on the present course. Thus, mathematical logic and theory of algorithms form the theoretical foundation of informatics, Boolean algebra serves as a basis for methods of electronic circuit development, theory of graphs is used when constructing multiprocessor computing systems and computer networks, and in programming. To teach students the competent practical application of their theoretical knowledge is one of the methodological objectives the given study guide can help with.
The study guide was created over a number of years and is backed up by the teaching experience of the course at the Department of Computer Science of Voronezh State University. Its contents correspond to Federal State Educational Standards on the following training programmes: Information Systems and Technologies, Program Engineering, and Radiophysics. The existing problem books on discrete mathematics and mathematical logic do not fully cover the necessary volume and information scope upon the abovementioned programmes to graduate fully skilled subject matter experts; therefore this study guide provides a large number of problems of a wide range of difficulty for these training programmes.