Introduction to Theoretical Computer Science

Total Page:16

File Type:pdf, Size:1020Kb

Introduction to Theoretical Computer Science BOAZBARAK INTRODUCTIONTO THEORETICAL COMPUTERSCIENCE TEXTBOOK IN PREPARATION. AVAILABLEON HTTPS://INTROTCS.ORG Text available on https://github.com/boazbk/tcs - please post any issues there - thank you! This version was compiled on Wednesday 26th August, 2020 18:10 Copyright © 2020 Boaz Barak This work is licensed under a Creative Commons “Attribution-NonCommercial- NoDerivatives 4.0 International” license. To Ravit, Alma and Goren. Contents Preface 9 Preliminaries 17 0 Introduction 19 1 Mathematical Background 37 2 Computation and Representation 73 I Finite computation 111 3 Defining computation 113 4 Syntactic sugar, and computing every function 149 5 Code as data, data as code 175 II Uniform computation 205 6 Functions with Infinite domains, Automata, and Regular expressions 207 7 Loops and infinity 241 8 Equivalent models of computation 271 9 Universality and uncomputability 315 10 Restricted computational models 347 11 Is every theorem provable? 365 Compiled on 8.26.2020 18:10 6 III Efficient algorithms 385 12 Efficient computation: An informal introduction 387 13 Modeling running time 407 14 Polynomial-time reductions 439 15 NP, NP completeness, and the Cook-Levin Theorem 465 16 What if P equals NP? 483 17 Space bounded computation 503 IV Randomized computation 505 18 Probability Theory 101 507 19 Probabilistic computation 527 20 Modeling randomized computation 539 V Advanced topics 561 21 Cryptography 563 22 Proofs and algorithms 591 23 Quantum computing 593 VI Appendices 625 Contents (detailed) Preface 9 0.1 To the student ........................ 10 0.1.1 Is the effort worth it? . 11 0.2 To potential instructors ................... 12 0.3 Acknowledgements ..................... 14 Preliminaries 17 0 Introduction 19 0.1 Integer multiplication: an example of an algorithm . 20 0.2 Extended Example: A faster way to multiply (optional) 22 0.3 Algorithms beyond arithmetic . 27 0.4 On the importance of negative results . 28 0.5 Roadmap to the rest of this book . 29 0.5.1 Dependencies between chapters . 30 0.6 Exercises ........................... 32 0.7 Bibliographical notes .................... 33 1 Mathematical Background 37 1.1 This chapter: a reader’s manual . 37 1.2 A quick overview of mathematical prerequisites . 38 1.3 Reading mathematical texts . 39 1.3.1 Definitions ...................... 40 1.3.2 Assertions: Theorems, lemmas, claims . 40 1.3.3 Proofs ......................... 40 1.4 Basic discrete math objects . 41 1.4.1 Sets .......................... 41 1.4.2 Special sets ...................... 42 1.4.3 Functions ....................... 44 1.4.4 Graphs ........................ 46 1.4.5 Logic operators and quantifiers . 49 1.4.6 Quantifiers for summations and products . 50 1.4.7 Parsing formulas: bound and free variables . 50 1.4.8 Asymptotics and Big- notation . 52 푂 8 1.4.9 Some “rules of thumb” for Big- notation . 53 1.5 Proofs ............................. 54 1.5.1 Proofs and programs . .푂 . 55 1.5.2 Proof writing style . 55 1.5.3 Patterns in proofs . 56 1.6 Extended example: Topological Sorting . 58 1.6.1 Mathematical induction . 60 1.6.2 Proving the result by induction . 61 1.6.3 Minimality and uniqueness . 63 1.7 This book: notation and conventions . 65 1.7.1 Variable name conventions . 66 1.7.2 Some idioms ..................... 67 1.8 Exercises ........................... 69 1.9 Bibliographical notes .................... 71 2 Computation and Representation 73 2.1 Defining representations . 75 2.1.1 Representing natural numbers . 76 2.1.2 Meaning of representations (discussion) . 78 2.2 Representations beyond natural numbers . 78 2.2.1 Representing (potentially negative) integers . 79 2.2.2 Two’s complement representation (optional) . 79 2.2.3 Rational numbers, and representing pairs of strings ......................... 80 2.3 Representing real numbers . 82 2.4 Cantor’s Theorem, countable sets, and string represen- tations of the real numbers . 83 2.4.1 Corollary: Boolean functions are uncountable . 89 2.4.2 Equivalent conditions for countability . 89 2.5 Representing objects beyond numbers . 90 2.5.1 Finite representations . 91 2.5.2 Prefix-free encoding . 91 2.5.3 Making representations prefix-free . 94 2.5.4 “Proof by Python” (optional) . 95 2.5.5 Representing letters and text . 97 2.5.6 Representing vectors, matrices, images . 99 2.5.7 Representing graphs . 99 2.5.8 Representing lists and nested lists . 99 2.5.9 Notation . 100 2.6 Defining computational tasks as mathematical functions 100 2.6.1 Distinguish functions from programs! . 102 2.7 Exercises . 104 2.8 Bibliographical notes . 108 9 I Finite computation 111 3 Defining computation 113 3.1 Defining computation . 115 3.2 Computing using AND, OR, and NOT. 116 3.2.1 Some properties of AND and OR . 118 3.2.2 Extended example: Computing XOR from AND, OR, and NOT . 119 3.2.3 Informally defining “basic operations” and “algorithms” . 121 3.3 Boolean Circuits . 123 3.3.1 Boolean circuits: a formal definition . 124 3.3.2 Equivalence of circuits and straight-line programs 127 3.4 Physical implementations of computing devices (di- gression) . 130 3.4.1 Transistors . 131 3.4.2 Logical gates from transistors . 132 3.4.3 Biological computing . 132 3.4.4 Cellular automata and the game of life . 132 3.4.5 Neural networks . 132 3.4.6 A computer made from marbles and pipes . 133 3.5 The NAND function . 134 3.5.1 NAND Circuits . 135 3.5.2 More examples of NAND circuits (optional) . 136 3.5.3 The NAND-CIRC Programming language . 138 3.6 Equivalence of all these models . 140 3.6.1 Circuits with other gate sets . 141 3.6.2 Specification vs. implementation (again) . 142 3.7 Exercises . 143 3.8 Biographical notes . 146 4 Syntactic sugar, and computing every function 149 4.1 Some examples of syntactic sugar . 151 4.1.1 User-defined procedures . 151 4.1.2 Proof by Python (optional) . 153 4.1.3 Conditional statements . 154 4.2 Extended example: Addition and Multiplication (op- tional) .............................157 4.3 The LOOKUP function . 158 4.3.1 Constructing a NAND-CIRC program for LOOKUP . 159 4.4 Computing every function . 161 4.4.1 Proof of NAND’s Universality . 162 4.4.2 Improving by a factor of (optional) . 163 푛 10 4.5 Computing every function: An alternative proof . 165 4.6 The class SIZE . 167 4.7 Exercises . 170 4.8 Bibliographical(푇 notes ) . 174 5 Code as data, data as code 175 5.1 Representing programs as strings . 177 5.2 Counting programs, and lower bounds on the size of NAND-CIRC programs . 178 5.2.1 Size hierarchy theorem (optional) . 180 5.3 The tuples representation . 182 5.3.1 From tuples to strings . 183 5.4 A NAND-CIRC interpreter in NAND-CIRC . 184 5.4.1 Efficient universal programs . 185 5.4.2 A NAND-CIRC interpeter in “pseudocode” . 186 5.4.3 A NAND interpreter in Python . 187 5.4.4 Constructing the NAND-CIRC interpreter in NAND-CIRC . 188 5.5 A Python interpreter in NAND-CIRC (discussion) . 191 5.6 The physical extended Church-Turing thesis (discus- sion) .............................193 5.6.1 Attempts at refuting the PECTT . 195 5.7 Recap of Part I: Finite Computation . 199 5.8 Exercises . 201 5.9 Bibliographical notes . 203 II Uniform computation 205 6 Functions with Infinite domains, Automata, and Regular expressions 207 6.1 Functions with inputs of unbounded length . 208 6.1.1 Varying inputs and outputs . 209 6.1.2 Formal Languages . 211 6.1.3 Restrictions of functions . 211 6.2 Deterministic finite automata (optional) . 212 6.2.1 Anatomy of an automaton (finite vs. unbounded) 215 6.2.2 DFA-computable functions . 216 6.3 Regular expressions . 217 6.3.1 Algorithms for matching regular expressions . 221 6.4 Efficient matching of regular expressions (optional) . 223 6.4.1 Matching regular expressions using DFAs . 227 6.4.2 Equivalence of regular expressions and automata 228 6.4.3 Closure properties of regular expressions . 230 11 6.5 Limitations of regular expressions and the pumping lemma ............................231 6.6 Answering semantic questions about regular expres- sions .............................236 6.7 Exercises . 239 6.8 Bibliographical notes . 240 7 Loops and infinity 241 7.1 Turing Machines . 242 7.1.1 Extended example: A Turing machine for palin- dromes . 244 7.1.2 Turing machines: a formal definition . 245 7.1.3 Computable functions . 247 7.1.4 Infinite loops and partial functions . 248 7.2 Turing machines as programming languages . 249 7.2.1 The NAND-TM Programming language . 251 7.2.2 Sneak peak: NAND-TM vs Turing machines . 254 7.2.3 Examples . 254 7.3 Equivalence of Turing machines and NAND-TM pro- grams .............................257 7.3.1 Specification vs implementation (again) . 260 7.4 NAND-TM syntactic sugar . 261 7.4.1 “GOTO” and inner loops . 261 7.5 Uniformity, and NAND vs NAND-TM (discussion) . 264 7.6 Exercises . 265 7.7 Bibliographical notes . 268 8 Equivalent models of computation 271 8.1 RAM machines and NAND-RAM . 273 8.2 The gory details (optional) . 277 8.2.1 Indexed access in NAND-TM . 277 8.2.2 Two dimensional arrays in NAND-TM . 279 8.2.3 All the rest . 279 8.3 Turing equivalence (discussion) . 280 8.3.1 The “Best of both worlds” paradigm . 281 8.3.2 Let’s talk about abstractions . 281 8.3.3 Turing completeness and equivalence, a formal definition (optional) . 283 8.4 Cellular automata . 284 8.4.1 One dimensional cellular automata are Turing complete . 286 8.4.2 Configurations of Turing machines and the next-step function . 287 12 8.5 Lambda calculus and functional programming lan- guages ............................290 8.5.1 Applying functions to functions .
Recommended publications
  • NVIDIA Tesla Personal Supercomputer, Please Visit
    NVIDIA TESLA PERSONAL SUPERCOMPUTER TESLA DATASHEET Get your own supercomputer. Experience cluster level computing performance—up to 250 times faster than standard PCs and workstations—right at your desk. The NVIDIA® Tesla™ Personal Supercomputer AccessiBLE to Everyone TESLA C1060 COMPUTING ™ PROCESSORS ARE THE CORE is based on the revolutionary NVIDIA CUDA Available from OEMs and resellers parallel computing architecture and powered OF THE TESLA PERSONAL worldwide, the Tesla Personal Supercomputer SUPERCOMPUTER by up to 960 parallel processing cores. operates quietly and plugs into a standard power strip so you can take advantage YOUR OWN SUPERCOMPUTER of cluster level performance anytime Get nearly 4 teraflops of compute capability you want, right from your desk. and the ability to perform computations 250 times faster than a multi-CPU core PC or workstation. NVIDIA CUDA UnlocKS THE POWER OF GPU parallel COMPUTING The CUDA™ parallel computing architecture enables developers to utilize C programming with NVIDIA GPUs to run the most complex computationally-intensive applications. CUDA is easy to learn and has become widely adopted by thousands of application developers worldwide to accelerate the most performance demanding applications. TESLA PERSONAL SUPERCOMPUTER | DATASHEET | MAR09 | FINAL FEATURES AND BENEFITS Your own Supercomputer Dedicated computing resource for every computational researcher and technical professional. Cluster Performance The performance of a cluster in a desktop system. Four Tesla computing on your DesKtop processors deliver nearly 4 teraflops of performance. DESIGNED for OFFICE USE Plugs into a standard office power socket and quiet enough for use at your desk. Massively Parallel Many Core 240 parallel processor cores per GPU that can execute thousands of GPU Architecture concurrent threads.
    [Show full text]
  • 19 Theory of Computation
    19 Theory of Computation "You are about to embark on the study of a fascinating and important subject: the theory of computation. It com- prises the fundamental mathematical properties of computer hardware, software, and certain applications thereof. In studying this subject we seek to determine what can and cannot be computed, how quickly, with how much memory, and on which type of computational model." - Michael Sipser, "Introduction to the Theory of Computation", one of the driest computer science textbooks ever In which we go back to the basics with arcane, boring, and irrelevant set theory and counting. This week’s material is made challenging by two orthogonal issues. There’s a whole bunch of stuff to cover, and 95% of it isn’t the least bit interesting to a physical scientist. Nevertheless, being the starry-eyed optimist that I am, I’ll forge ahead through the mountainous bulk of knowledge. In other words, expect these notes to be long! But skim when necessary; if you look at the homework first (and haven’t entirely forgotten the lectures), you should be able to pick out the important parts. I understand if this type of stuff isn’t exactly your cup of tea, but bear with me while you can. In some sense, most of what we refer to as computer science isn’t computer science at all, any more than what an accountant does is math. Sure, modern economics takes some crazy hardcore theory to make it all work, but un- derlying the whole thing is a solid layer of applications and industrial moolah.
    [Show full text]
  • FUNDAMENTALS of COMPUTING (2019-20) COURSE CODE: 5023 502800CH (Grade 7 for ½ High School Credit) 502900CH (Grade 8 for ½ High School Credit)
    EXPLORING COMPUTER SCIENCE NEW NAME: FUNDAMENTALS OF COMPUTING (2019-20) COURSE CODE: 5023 502800CH (grade 7 for ½ high school credit) 502900CH (grade 8 for ½ high school credit) COURSE DESCRIPTION: Fundamentals of Computing is designed to introduce students to the field of computer science through an exploration of engaging and accessible topics. Through creativity and innovation, students will use critical thinking and problem solving skills to implement projects that are relevant to students’ lives. They will create a variety of computing artifacts while collaborating in teams. Students will gain a fundamental understanding of the history and operation of computers, programming, and web design. Students will also be introduced to computing careers and will examine societal and ethical issues of computing. OBJECTIVE: Given the necessary equipment, software, supplies, and facilities, the student will be able to successfully complete the following core standards for courses that grant one unit of credit. RECOMMENDED GRADE LEVELS: 9-12 (Preference 9-10) COURSE CREDIT: 1 unit (120 hours) COMPUTER REQUIREMENTS: One computer per student with Internet access RESOURCES: See attached Resource List A. SAFETY Effective professionals know the academic subject matter, including safety as required for proficiency within their area. They will use this knowledge as needed in their role. The following accountability criteria are considered essential for students in any program of study. 1. Review school safety policies and procedures. 2. Review classroom safety rules and procedures. 3. Review safety procedures for using equipment in the classroom. 4. Identify major causes of work-related accidents in office environments. 5. Demonstrate safety skills in an office/work environment.
    [Show full text]
  • Turing's Influence on Programming — Book Extract from “The Dawn of Software Engineering: from Turing to Dijkstra”
    Turing's Influence on Programming | Book extract from \The Dawn of Software Engineering: from Turing to Dijkstra" Edgar G. Daylight∗ Eindhoven University of Technology, The Netherlands [email protected] Abstract Turing's involvement with computer building was popularized in the 1970s and later. Most notable are the books by Brian Randell (1973), Andrew Hodges (1983), and Martin Davis (2000). A central question is whether John von Neumann was influenced by Turing's 1936 paper when he helped build the EDVAC machine, even though he never cited Turing's work. This question remains unsettled up till this day. As remarked by Charles Petzold, one standard history barely mentions Turing, while the other, written by a logician, makes Turing a key player. Contrast these observations then with the fact that Turing's 1936 paper was cited and heavily discussed in 1959 among computer programmers. In 1966, the first Turing award was given to a programmer, not a computer builder, as were several subsequent Turing awards. An historical investigation of Turing's influence on computing, presented here, shows that Turing's 1936 notion of universality became increasingly relevant among programmers during the 1950s. The central thesis of this paper states that Turing's in- fluence was felt more in programming after his death than in computer building during the 1940s. 1 Introduction Many people today are led to believe that Turing is the father of the computer, the father of our digital society, as also the following praise for Martin Davis's bestseller The Universal Computer: The Road from Leibniz to Turing1 suggests: At last, a book about the origin of the computer that goes to the heart of the story: the human struggle for logic and truth.
    [Show full text]
  • Anna Lysyanskaya Curriculum Vitae
    Anna Lysyanskaya Curriculum Vitae Computer Science Department, Box 1910 Brown University Providence, RI 02912 (401) 863-7605 email: [email protected] http://www.cs.brown.edu/~anna Research Interests Cryptography, privacy, computer security, theory of computation. Education Massachusetts Institute of Technology Cambridge, MA Ph.D. in Computer Science, September 2002 Advisor: Ronald L. Rivest, Viterbi Professor of EECS Thesis title: \Signature Schemes and Applications to Cryptographic Protocol Design" Massachusetts Institute of Technology Cambridge, MA S.M. in Computer Science, June 1999 Smith College Northampton, MA A.B. magna cum laude, Highest Honors, Phi Beta Kappa, May 1997 Appointments Brown University, Providence, RI Fall 2013 - Present Professor of Computer Science Brown University, Providence, RI Fall 2008 - Spring 2013 Associate Professor of Computer Science Brown University, Providence, RI Fall 2002 - Spring 2008 Assistant Professor of Computer Science UCLA, Los Angeles, CA Fall 2006 Visiting Scientist at the Institute for Pure and Applied Mathematics (IPAM) Weizmann Institute, Rehovot, Israel Spring 2006 Visiting Scientist Massachusetts Institute of Technology, Cambridge, MA 1997 { 2002 Graduate student IBM T. J. Watson Research Laboratory, Hawthorne, NY Summer 2001 Summer Researcher IBM Z¨urich Research Laboratory, R¨uschlikon, Switzerland Summers 1999, 2000 Summer Researcher 1 Teaching Brown University, Providence, RI Spring 2008, 2011, 2015, 2017, 2019; Fall 2012 Instructor for \CS 259: Advanced Topics in Cryptography," a seminar course for graduate students. Brown University, Providence, RI Spring 2012 Instructor for \CS 256: Advanced Complexity Theory," a graduate-level complexity theory course. Brown University, Providence, RI Fall 2003,2004,2005,2010,2011 Spring 2007, 2009,2013,2014,2016,2018 Instructor for \CS151: Introduction to Cryptography and Computer Security." Brown University, Providence, RI Fall 2016, 2018 Instructor for \CS 101: Theory of Computation," a core course for CS concentrators.
    [Show full text]
  • Three-Dimensional Integrated Circuit Design: EDA, Design And
    Integrated Circuits and Systems Series Editor Anantha Chandrakasan, Massachusetts Institute of Technology Cambridge, Massachusetts For other titles published in this series, go to http://www.springer.com/series/7236 Yuan Xie · Jason Cong · Sachin Sapatnekar Editors Three-Dimensional Integrated Circuit Design EDA, Design and Microarchitectures 123 Editors Yuan Xie Jason Cong Department of Computer Science and Department of Computer Science Engineering University of California, Los Angeles Pennsylvania State University [email protected] [email protected] Sachin Sapatnekar Department of Electrical and Computer Engineering University of Minnesota [email protected] ISBN 978-1-4419-0783-7 e-ISBN 978-1-4419-0784-4 DOI 10.1007/978-1-4419-0784-4 Springer New York Dordrecht Heidelberg London Library of Congress Control Number: 2009939282 © Springer Science+Business Media, LLC 2010 All rights reserved. This work may not be translated or copied in whole or in part without the written permission of the publisher (Springer Science+Business Media, LLC, 233 Spring Street, New York, NY 10013, USA), except for brief excerpts in connection with reviews or scholarly analysis. Use in connection with any form of information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed is forbidden. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. Printed on acid-free paper Springer is part of Springer Science+Business Media (www.springer.com) Foreword We live in a time of great change.
    [Show full text]
  • What Every Computer Scientist Should Know About Floating-Point Arithmetic
    What Every Computer Scientist Should Know About Floating-Point Arithmetic DAVID GOLDBERG Xerox Palo Alto Research Center, 3333 Coyote Hill Road, Palo Alto, CalLfornLa 94304 Floating-point arithmetic is considered an esotoric subject by many people. This is rather surprising, because floating-point is ubiquitous in computer systems: Almost every language has a floating-point datatype; computers from PCs to supercomputers have floating-point accelerators; most compilers will be called upon to compile floating-point algorithms from time to time; and virtually every operating system must respond to floating-point exceptions such as overflow This paper presents a tutorial on the aspects of floating-point that have a direct impact on designers of computer systems. It begins with background on floating-point representation and rounding error, continues with a discussion of the IEEE floating-point standard, and concludes with examples of how computer system builders can better support floating point, Categories and Subject Descriptors: (Primary) C.0 [Computer Systems Organization]: General– instruction set design; D.3.4 [Programming Languages]: Processors —compders, optirruzatzon; G. 1.0 [Numerical Analysis]: General—computer arithmetic, error analysis, numerzcal algorithms (Secondary) D. 2.1 [Software Engineering]: Requirements/Specifications– languages; D, 3.1 [Programming Languages]: Formal Definitions and Theory —semantZcs D ,4.1 [Operating Systems]: Process Management—synchronization General Terms: Algorithms, Design, Languages Additional Key Words and Phrases: denormalized number, exception, floating-point, floating-point standard, gradual underflow, guard digit, NaN, overflow, relative error, rounding error, rounding mode, ulp, underflow INTRODUCTION tions of addition, subtraction, multipli- cation, and division. It also contains Builders of computer systems often need background information on the two information about floating-point arith- methods of measuring rounding error, metic.
    [Show full text]
  • Cryptography
    Security Engineering: A Guide to Building Dependable Distributed Systems CHAPTER 5 Cryptography ZHQM ZMGM ZMFM —G. JULIUS CAESAR XYAWO GAOOA GPEMO HPQCW IPNLG RPIXL TXLOA NNYCS YXBOY MNBIN YOBTY QYNAI —JOHN F. KENNEDY 5.1 Introduction Cryptography is where security engineering meets mathematics. It provides us with the tools that underlie most modern security protocols. It is probably the key enabling technology for protecting distributed systems, yet it is surprisingly hard to do right. As we’ve already seen in Chapter 2, “Protocols,” cryptography has often been used to protect the wrong things, or used to protect them in the wrong way. We’ll see plenty more examples when we start looking in detail at real applications. Unfortunately, the computer security and cryptology communities have drifted apart over the last 20 years. Security people don’t always understand the available crypto tools, and crypto people don’t always understand the real-world problems. There are a number of reasons for this, such as different professional backgrounds (computer sci- ence versus mathematics) and different research funding (governments have tried to promote computer security research while suppressing cryptography). It reminds me of a story told by a medical friend. While she was young, she worked for a few years in a country where, for economic reasons, they’d shortened their medical degrees and con- centrated on producing specialists as quickly as possible. One day, a patient who’d had both kidneys removed and was awaiting a transplant needed her dialysis shunt redone. The surgeon sent the patient back from the theater on the grounds that there was no urinalysis on file.
    [Show full text]
  • 2020 SIGACT REPORT SIGACT EC – Eric Allender, Shuchi Chawla, Nicole Immorlica, Samir Khuller (Chair), Bobby Kleinberg September 14Th, 2020
    2020 SIGACT REPORT SIGACT EC – Eric Allender, Shuchi Chawla, Nicole Immorlica, Samir Khuller (chair), Bobby Kleinberg September 14th, 2020 SIGACT Mission Statement: The primary mission of ACM SIGACT (Association for Computing Machinery Special Interest Group on Algorithms and Computation Theory) is to foster and promote the discovery and dissemination of high quality research in the domain of theoretical computer science. The field of theoretical computer science is the rigorous study of all computational phenomena - natural, artificial or man-made. This includes the diverse areas of algorithms, data structures, complexity theory, distributed computation, parallel computation, VLSI, machine learning, computational biology, computational geometry, information theory, cryptography, quantum computation, computational number theory and algebra, program semantics and verification, automata theory, and the study of randomness. Work in this field is often distinguished by its emphasis on mathematical technique and rigor. 1. Awards ▪ 2020 Gödel Prize: This was awarded to Robin A. Moser and Gábor Tardos for their paper “A constructive proof of the general Lovász Local Lemma”, Journal of the ACM, Vol 57 (2), 2010. The Lovász Local Lemma (LLL) is a fundamental tool of the probabilistic method. It enables one to show the existence of certain objects even though they occur with exponentially small probability. The original proof was not algorithmic, and subsequent algorithmic versions had significant losses in parameters. This paper provides a simple, powerful algorithmic paradigm that converts almost all known applications of the LLL into randomized algorithms matching the bounds of the existence proof. The paper further gives a derandomized algorithm, a parallel algorithm, and an extension to the “lopsided” LLL.
    [Show full text]
  • Top 10 Reasons to Major in Computing
    Top 10 Reasons to Major in Computing 1. Computing is part of everything we do! Computing and computer technology are part of just about everything that touches our lives from the cars we drive, to the movies we watch, to the ways businesses and governments deal with us. Understanding different dimensions of computing is part of the necessary skill set for an educated person in the 21st century. Whether you want to be a scientist, develop the latest killer application, or just know what it really means when someone says “the computer made a mistake”, studying computing will provide you with valuable knowledge. 2. Expertise in computing enables you to solve complex, challenging problems. Computing is a discipline that offers rewarding and challenging possibilities for a wide range of people regardless of their range of interests. Computing requires and develops capabilities in solving deep, multidimensional problems requiring imagination and sensitivity to a variety of concerns. 3. Computing enables you to make a positive difference in the world. Computing drives innovation in the sciences (human genome project, AIDS vaccine research, environmental monitoring and protection just to mention a few), and also in engineering, business, entertainment and education. If you want to make a positive difference in the world, study computing. 4. Computing offers many types of lucrative careers. Computing jobs are among the highest paid and have the highest job satisfaction. Computing is very often associated with innovation, and developments in computing tend to drive it. This, in turn, is the key to national competitiveness. The possibilities for future developments are expected to be even greater than they have been in the past.
    [Show full text]
  • Declustering Spatial Databases on a Multi-Computer Architecture
    Declustering spatial databases on a multi-computer architecture 1 2 ? 3 Nikos Koudas and Christos Faloutsos and Ibrahim Kamel 1 Computer Systems Research Institute University of Toronto 2 AT&T Bell Lab oratories Murray Hill, NJ 3 Matsushita Information Technology Lab oratory Abstract. We present a technique to decluster a spatial access metho d + on a shared-nothing multi-computer architecture [DGS 90]. We prop ose a software architecture with the R-tree as the underlying spatial access metho d, with its non-leaf levels on the `master-server' and its leaf no des distributed across the servers. The ma jor contribution of our work is the study of the optimal capacity of leaf no des, or `chunk size' (or `striping unit'): we express the resp onse time on range queries as a function of the `chunk size', and we show how to optimize it. We implemented our metho d on a network of workstations, using a real dataset, and we compared the exp erimental and the theoretical results. The conclusion is that our formula for the resp onse time is very accurate (the maximum relative error was 29%; the typical error was in the vicinity of 10-15%). We illustrate one of the p ossible ways to exploit such an accurate formula, by examining several `what-if ' scenarios. One ma jor, practical conclusion is that a chunk size of 1 page gives either optimal or close to optimal results, for a wide range of the parameters. Keywords: Parallel data bases, spatial access metho ds, shared nothing ar- chitecture. 1 Intro duction One of the requirements for the database management systems (DBMSs) of the future is the ability to handle spatial data.
    [Show full text]
  • Open Dissertation Draft Revised Final.Pdf
    The Pennsylvania State University The Graduate School ICT AND STEM EDUCATION AT THE COLONIAL BORDER: A POSTCOLONIAL COMPUTING PERSPECTIVE OF INDIGENOUS CULTURAL INTEGRATION INTO ICT AND STEM OUTREACH IN BRITISH COLUMBIA A Dissertation in Information Sciences and Technology by Richard Canevez © 2020 Richard Canevez Submitted in Partial Fulfillment of the Requirements for the Degree of Doctor of Philosophy December 2020 ii The dissertation of Richard Canevez was reviewed and approved by the following: Carleen Maitland Associate Professor of Information Sciences and Technology Dissertation Advisor Chair of Committee Daniel Susser Assistant Professor of Information Sciences and Technology and Philosophy Lynette (Kvasny) Yarger Associate Professor of Information Sciences and Technology Craig Campbell Assistant Teaching Professor of Education (Lifelong Learning and Adult Education) Mary Beth Rosson Professor of Information Sciences and Technology Director of Graduate Programs iii ABSTRACT Information and communication technologies (ICTs) have achieved a global reach, particularly in social groups within the ‘Global North,’ such as those within the province of British Columbia (BC), Canada. It has produced the need for a computing workforce, and increasingly, diversity is becoming an integral aspect of that workforce. Today, educational outreach programs with ICT components that are extending education to Indigenous communities in BC are charting a new direction in crossing the cultural barrier in education by tailoring their curricula to distinct Indigenous cultures, commonly within broader science, technology, engineering, and mathematics (STEM) initiatives. These efforts require examination, as they integrate Indigenous cultural material and guidance into what has been a largely Euro-Western-centric domain of education. Postcolonial computing theory provides a lens through which this integration can be investigated, connecting technological development and education disciplines within the parallel goals of cross-cultural, cross-colonial humanitarian development.
    [Show full text]