Dr. Gabriel Robins
Professor of Computer Science
Department of Computer Science
School of Engineering and Applied Science
University of Virginia
151 Engineer's Way, P.O. Box 400740
Charlottesville, VA 22904-4740, USA

Phone: (434) 982-2207, Fax: (434) 982-2214
Office: 210 Olsson Hall
Gabe's vitae / resume (NIH Biosketch)

CS6160 - Theory of Computation Blog, UVa

Questions and answers regarding the CS6160 Theory of Computation class material will be accumulated in this file throughout the semester. Please browse through it often.
The questions in this file are organized by the following categories; you may peruse this file sequentially, or jump directly to the category of your choice by clicking on one of the following links:

General administrative Q and A

The best way to see the latest state-of-the-art in theory and algorithms research is to look at the most recent papers published at the top theory & algorithms conferences and journals, namely:

Most of the citations in the Web pages above do not include the full text / PDF of the actual paper, but if you do a Google search for the paper's title (and/or author list), you'll very quickly find the full text / PDF of the actual paper (usually located off of the author's home page).

To do specific topic searches for CS papers, two great online bibliographic search resources are Citeseer and Google Scholar, which data-mine the Web's publication archives and rank the papers by the number of citations (i.e., how many other papers refer to a given paper), so the most relevant papers tend to be listed first (like Google search does). It also provides the PDF/PS to most of the papers there (hundreds of thousands of CS papers in all). I highly recommended both Citeseer and Google Scholar as literature-searching resources!

Keep in mind that the sources listed above contain thousands of very interesting papers (as well as hundreds of thousands of other papers), so you can spend a lifetime on these sites and still not read everything. So please don't get lost or discouraged by this mountain of knowledge.

If you want a more gentle introduction to recent theory and algorithms research, I recommend starting with the Sipser theory textbook, and the Cormen et al. algorithms textbook (especially the "advanced topics" chapters) and tracking down the original papers mentioned in the "Chapter Notes" at the end of each chapter, and also looking at more recent papers published in those same conferences and journals, etc.) Some of the puns in the Cormen algorithms textbook are explained in http://mitpress.mit.edu/algorithms/profjokes.html - Enjoy! :)

Note: "extra credit" points will not hurt those who don't receive them in this class, since as I explained in class once, at the semester's end, I take a first pass and assign grades while *completely ignoring* extra credit points for everyone; then, I take a second pass and raise (but never lower) the grades of those who received enough extra credit points to bring them up into a higher category w.r.t. the first pass.

This is really the only fair way to implement "extra credit" so it is exactly that, namely "extra" (i.e., so it does not hurt those who didn't earn it). Also, I have no grades "quotas" - if everyone aces the course, then everyone will receive A's.

So, please view extra-credit as the positive and helpful opportunities that they are intended to be.

For the project, I offer one extra credit point for every day that you turn it in early (last day to turn it in is the day of the final).

Welcome to the Theory of Computation course! (CS6160)

All CS6160-related materials (including the overhead slides) will be posted at the CS6160 Web site. The first lecture slide set is already posted there.

If I am missing any CS6160 students in my Emails' "to:" list (or if you prefer to receive Email at a different address than the usual UVa-assigned Email address), please let me know and I'll modify my CS6160 Email list accordingly. The Email list will serve as a primary means of communication among us in CS6160, so it is important that the CS6160 Email list includes *everyone* in the class (whether they are enrolled for a grade, auditing, or just sitting in on some lectures).

Our textbook is Sipser's Introduction to the Theory of Computation, Second Edition (published in 2005), which is also available as a searchable PDF here. (While the downloadable PDF version of the book is convenient, please respect copyright laws and also purchase a properly licensed copy.)

If you are using the "international edition" of this textbook, please be aware that some of the page numbers and question numbers may be different there from the official Second Edition above. So please don't blindly use the international edition to refer to specific page numbers and question numbers, without also consulting the official Second Edition to make sure that you are solving the right problems, etc. This is an important issue, otherwise you'll be solving the wrong questions than the ones actually asked on the problem sets. (If necessary, you can borrow the official Second Edition version of this book from someone from your study group, photocopy the relevant pages, etc.)

Please read the very useful handout, which lists the definitions of most of the important concepts that we will cover in this class. Please refer to this handout throughout the course.

Here are some fun articles that you should read, covering numerous fascinating topics in theory, algorithms, exotic computation models, possible CS technology futures. These essays will introduce you to many new ideas and will help expand your mind, your thinking processes, and your problem-solving skills. You can read these essays at leisure over the course of the semester (say two to three articles per week - they are pretty short), but please finish reading all of these essays by the end of the semester.

One particularly good article there is "Who Can Name the Bigger Number?". Please read this article ASAP, and for extra-credit EMail to me a paragraph describing what new or surprising things you learned from this article. (All essays / articles / videos that you read / watch in connection with this class are worth one extra-credit point each. Simply Email me a paragraph description to claim the extra credit on anything.)

I also included on that CS Readings Web page some links to good Wikipedia articles on various topics relevant to this course, as well as links to several good books. For example, a good classic (and easy to read) tutorial book on problem solving is Polya's "How to Solve It". Another great easy-reading fun book on infinities and other deep and subtle mathematical concepts is Rucker's "Infinity and the Mind". I highly encourage everyone to read these two books. (These two books are probably one of the best ways to spend ten bucks that I can think of.)

Links to more advanced topics in CS theory and algorithms (from the leading conferences and journals on these topics) are available.

Remember: while I can *introduce* you to lots of cool ideas, it is then up to you to do the remaining "heavy lifting" yourself - i.e., following up on class discussions by reading up on these topics in greater detail, going to other sources, solving lots of problems, working in groups, etc. (Classroom time is relatively short, and as researchers and scientists, a lot of of your individual learning needs to occur outside of the classroom.)

If you haven't done so already, please watch the "Time Management" video lecture of Randy Pausch (given at UVa in Nov 2007), as well as his "Last Lecture".

The "Time Management" video in particular is the best talk on this topic that I ever heard, and the hour that you spend watching it will pay you back by a factor of thousands over your career in terms of time saved and productivity gains. The slides for the "Time Management" lecture are available also, along with more information about Randy Pausch. (BTW, Randy's lectures& book are required reading for all entering students at CMU.)

Please watch these two videos ASAP (and for extra-credit submit a paragraph describing what new / surprising things you learned from each).

Finally, another fascinating video that I'd like you to watch is "Powers of Ten", which presents a wonderful visual depiction of the power of exponentials, in terms of the scale of the physical universe.

I hope that you enjoy the above materials and resources as much as I do!

Finally, as I mentioned in class, start working on the problem sets and please work in groups on these problems. Recall that I promised that most of the midterm& final exam questions will come verbatim from these problem sets.

And one interesting extra-credit problem that will be described in the first lecture is whether five test tubes can be simultaneously spun in a balanced way in a 12-hole centrifuge. (Please rigorously prove or disprove it, using arguments that are as elegant, simple, and general as possible.)

I look forward to sharing with all of you a fascinating journey of discovery, insights, and problem solving!

Q and A regarding the handouts/slides

On the definition of antisymmetric relations, lets use the slightly modified definition, where a relation R is antisymmetric if R(a,b) is not equal to R(b,a) unless a=b. This (i.e., excluding self-related elements (a,a) from the antisymmetric constraint) allows a relation to be reflexive and antisymmetric simultaneously. Thanks to the people who pointed out this issue!

Q and A regarding the project

Q: We are done with our class project. When can we show you the demo?

A: You can demo your project after any class meeting.

General technical Q and A

Q and A regarding homework number 1

Q: Is a closure _necessarily a minimum_ set that satisfies a property on a set, i.e. { reflexivity, symmetry, transitivity, ... } ? A relation that contains a closure on a set is not itself called a 'closure' because it is not minimum, is that correct?

A: A closure of a set is a "minimum" superset containing the set, and still closed under the operation or propetry in question. (By "minimum" we mean the intersection of all sets satisfying that property.) So if a set contains a "smaller" (subset) that's still a closure (w.r.t. the same operation), then that set is not the "smallest" closure of the original set.

Q: RE "the rationals crossed with the integers", what is this set?

A: The rationals crossed with the integers is the set of all ordered pairs such that in each of the ordered pairs in this set, the first element is a rational number and the second element is an integer; i.e., it is the set: { (a/b , c) | a, b, and c are all integers}

Q: Does the term dovetailing have any special meaning other than interleaving? I have been used to using the later but not the former. The Wiki explanation doesn't seem to suggest anything in particular. Perhaps interleaving is just more general and may not imply dovetailing as a procedure?

A: Dovetailing and interleaving are certainly similar concepts. The description at http://en.wikipedia.org/wiki/Dovetailing_%28computer_science%29 seems too short and should probably cover more cases and examples. There are more subtle examples of dovetailing / interleaving where we take a systematic path through a very abstract mathematical space (e.g., Chess / Go board positions, multivariate polynomials, higher-dimensional matrices, hyper-graphs, etc.) where there may be no nice and easy single "picture" to illustrate it graphically, like we did in class with our "dovetailing" through the rational numbers. But these are still (more general) instances of "dovetailing", or "interleaving", however you prefer to think about it.

Q: For question #19, do you want a proof or just examples?

A: In #19, examples *are* proof, actually.

Q: If the complex numbers are closed under exponentiation, then when you pick a complex number and apply an exponentiation operation, the result is a complex number, right? When you were asking what was the value of i^i, if that resulted in a non complex number, that would imply that the complex numbers were not closed under the exponentiation?

A: Yes - the question was general - namely to determine whether it is always the case that (a+bi)^(c+di) is a complex number (as opposed to something else), for any real a, b, c, d (except perhaps when they are all zero, in which case the result 0^0 is undefined). The case of i^i is a special case of the above general question (and i^i happens to be equal to a periodic set of real numbers, as we discussed in class yesterday). If i^i was not a complex number, then the more general question above would be answered in the negative through this counter-example. But since i^i is indeed a complex number (and in fact even a real number), that does not settle the general question above either way, and a more general proof is still needed.

Q: In Problem Set 1, I am confused by the expression 2^{1,2} and how to interpret it.

A: This is the "powerset" or set of all subsets, as described on page 5 of the handout I mentioned in recent Email (and which is also linked from the class Web site) - see: http://www.cs.virginia.edu/~robins/cs6160/basics.pdf

Q: In question 11b, what constitutes a function "mapping reals to reals"? Does this mean any function that maps at least one real to another real? Or does it only include functions whose domain is the whole real line?

A: The domain and range of such functions is the set of real numbers R, but note that such a function does not have to be a bijection, be even defined everywhere on R. For example, the sqrt(x) function from reals to reals is not defined on the negative reals, 1/x is not defined at zero, and the function "f(x) = 1/(x-x)" is nowhere defined on the reals, but these are all still "functions from reals to reals". So the set of functions in this question refers to absolutely *all* possible functions from R to R, regardless of their other properties.

Q: For Problem 20b which reads (L+ = L* - {^}), what does the "{^}" notation mean? Is it correct to assume it's the circumflex character? Also, does the subtraction notation mean "the language L* without {^} in it?"

A: The symbol ^ in the context of formal languages denotes the empty string (sometimes also denoted by the Greek letter epsilon). And yes, the expression L* - {^} denotes set subtraction (i.e., the set L* minus the set {^}).

Q: For True/False or Yes/No questions, how much explanation are you looking for in the answers?

A: For any problem in this course (whether on homeworks, exams, or for extra credit), you should always supply an explanation/proof of your answer. Basically, please explain your answers to me similarly to how you would like me to explain my answers to you. It does not have to be a *completely* detailed and formal writeup, but it must be rigorous enough so that it contains all the essential insights, and can be easily converted into a rigorous formal proof, if necessary (i.e., please try to make your answers as convincing and detailed as the explanations & proofs that I give in class).

Q: In 16 of Homework 1, is the question stating that you can only have either 3 mutual strangers or 3 mutual acquaintances, but that you can't have both? By 3 mutual acquaintances, does it mean that each person in this group of 3 knows the other two people (ie A knows B, A knows C, and B knows C)?

A: Mutual friends all know each other (i.e., each one knows each and every one of the others). Similarly for mutual strangers. The question asks for a proof that there always exists either a group of three mutual strangers, or a group of three mutual friends, or possibly both. (Or even larger groups of mutual friends or strangers; but note that a group of four mutual friends also automatically contains a group of three mutual friends - i.e., any subset containing three of the four would constitute such a subgroup). So these various case are not mutually exclusive.

Q: Question 11 on the HW asks "What is the cardinality of each of the following sets?" I am not sure what an answer "looks like", since most of these sets are infinite.

A: The answer should indicate how "big" of an infinity each set is (e.g., that of the Naturals, the Reals, the Powerset of the Reals, etc.)

Q and A regarding the midterm

Q: What does it mean for a string to be incompressible?

A: A string is incompressible if its shortest description (using a Turing machine whose output is that string, or a C program that prints it out, or a precise English or mathematical description of it, or any other reasonable encoding scheme) is not much shorter than the string itself. Another way of saying it is that the string is "random" or has maximum entropy (recall our discussions of Shannon and his work on informaton theory). The Sipser (Second Edition) textbook discusses incompressible strings beginning on page 239.

Q: What do you mean by "characterizing" a set of languages?

A: Characterizing a set of languages means describing as precisely as possible what fundamental common traits they have in common. For example, we can characterize the set of languages accepted by finite automata as "the regular languages" or "the languages denoted by regular expressions".

Q: Are you willing to give any points for partial solutions if we get stuck without a complete answer?

A: Sure, I give substantial partial credit for partial solutions, insightful ideas, etc. even if no complete solution is reached. Also, all the questions on the midterm can be solved with only the knowledge and techniques that we covered in class so far. In other words, no advanced knowledge or yet-uncovered results / techniques are needed to solve any of the midterm questions. I hope this "meta hint" helps.

Q: I have a quick question about the exam before I pick it up, to ensure I don't use any notes that I am not supposed to use. When we were collaborating on the problem sets, we not only discussed them but also shared copies of the answers we obtained individually. Are all those notes allowed, or should I leave aside those copies and only use the ones that I wrote myself from the sessions?

A: Any notes that ended up in your possession over time as the result of joint studying are fair game. But it's not OK to just massively copy other people's notes & answers right before the exam. The general ethos here is that you can certainly benefit from your own work, and from work you put in jointly with others (all of which have obvious value to your learning & growth), but its not OK to arbitrarily lean on others without having invested serious time and effort in the joint work yourself. In case of gray areas, I am willing to give you the benefit of the doubt in your favor; but there are also lots of un-cool scenarios that border on blatant copying, and I hope that people can recognize and avoid these situations. I hope this makes sense, and thanks for asking for clarification on this issue.

Q: In the exam, if we knew that something could recognize the same language as something else, would it be sufficient to say that the former could recognize the same set of languages as the latter, even if we haven't explicitly said what either of the sets is?

A: To show that one type Y of machine can recognize *all* the languages which another type X of machine accepts, it is sufficient to prove that *for any* machine X' of type X, there exists a machine Y' of type Y that accepts the same language L(X'). And you need to argue this convincingly - i.e., explain how would Y' simulate X' in general and precisely mimic its behavior and/or output. You don't necessarily need to know exactly what class of languages is accepted by either X or Y -type machines; nevertheless, you have proved with the above argument that class of languages accepted by X -type automata is a *subset* of the class of languages accepted by Y -type automata.

Q and A regarding the final

Q: For question 8, I understand that it is not possible to expose the impostor in polynomial time as graph 3-colorability is a NP complete problem. But I am not sure whether such a short answer is worth of 20 points. Do we also need to prove that graph 3-colorability is NP complete?

A: Be careful what you assume, and don't jump to false conclusions. You have at your disposal a true oracle, as well as an impostor, although you don't a priori know which is which. A "normal" algorithm (or TM) does not have access to these resources. The question here is whether this access helps you or not (computationally speaking). And your (meta-)intuition so far is right: if the answer was so short or so simple, it would not be worth 20 points: I try hard to not insult people's intelligence. :)

Q: I have a question about the aliens / oracles problem. When the question asks if the impostor can be exposed in polynomial time, is that nondeterministic polynomial time, deterministic polynomial time, or does it purposely not specify?

A: It refers to deterministic polynomial time (if non-deterministic polynomial time was allowed, that would have made the problem trivial).

Return to Gabriel Robins' home page

EMail to EMail to robins@cs.virginia.edu