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

robins@cs.virginia.edu
www.cs.virginia.edu/robins
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 CS6160!

All CS6160-related materials (including the overhead slides) will be posted at the CS6160 Web site.

If I am missing any CS6160 students in this Email's "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 Email list accordingly. This 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* attending the class (whether they are enrolled for a grade, auditing, or just sitting in on some lectures).

A very useful handout, lists the definitions of most of the important concepts that we will cover in this class.

Here are some fun articles that I would like you to read, covering fascinating topics in theory, algorithms, exotic computation models, possible CS technology futures, etc. These essays will introduce you to many new ideas and will help expand your mind and your thinking processes. 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.

I also included there 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 on problem solving is Polya's "How to Solve It". Another great easy-reading fun book on infinities and other deep mathematical concepts is Rucker's "Infinity and the Mind" (This book is probably one of the best ways to spend five bucks that I can think of. :) )

Links to more advanced topics in CS theory and algorithms are given at http://www.cs.virginia.edu/~robins/cs6160/QA.html#administrative

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 & scientists, a lot of of your 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, along with more information about Randy Pausch. (Randy's lectures & book are required reading for all entering students at CMU.)

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 & resources as much as I do!

Thanks,

Gabe


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: 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/cs3102/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: A deterministic PDA with two counters does not also have a normal stack, right?

A: That's correct: a "counter" is a single-character-alphabet stack, but the counter PDA does not also have a normal multi-character stack in addition to the counters.


Q: For the last question on the exam, how is the deterministic PDA with a "counter" able to detect the bottom-of-stack of a counter?

A: You may assume that the bottom of the counter / stack is just a fixed special character $ that is different than the rest of the counter's one-letter alphabet.


Q: What exactly is question 3 asking?

A: Here is a mode detailed rewording of this question:

* B is a language consisting of strings, each of which encodes (i.e. describes) a Turing machine.
* B is a Turing-recognizable language

Note that B is not required to contain *all* TM descriptions.

You need to find / describe a language C, such that:

* C is a language consisting of strings, each of which encodes (i.e. describes) a Turing machine.
* C is a Turing-decidable language
* For every string b_i in B there exists a string c_j in C such that the language of the Turing machine described by b_i is exactly the same as the language of the Turing machine described by c_j.
And conversely:
* For every string c_i in C there exists a string b_j in B such that the language of the Turing machine described by b_i is exactly the same as the language of the Turing machine described by c_j.

In other words, the set of languages accepted by the TM's described by B is exactly the same set languages accepted by the TM's described by C. And while B is a only Turing-recognizable, C must also be Turing-decidable.

C can be given by describing a Turing machine that decides C - i.e., describe an always-halting TM M such that L(M)=C.

And as I have been saying all along, please pay close attention to the non-trivial nesting of types here, and watch out for "type errors"!


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 (and not even including the last couple of weeks of lectures). 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: For #3 on Midterm, is B the set of all TM descriptions, or just some arbitrary set of TM descriptions? (i.e., some recognizable language that encodes TM descriptions, but not necessarily all TM descriptions)

A: Its the latter. That is, B is an arbitrary (but Turing-recognizable) set of Turing machine descriptions, not necessarily *all* TM descriptions (so B can be empty, finite, infinite, or even possibly contain all TM descriptions).


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 and A regarding the final

Q: I am not sure I know what a matrix inversion is.

A: The inverse of a matrix M is a matrix N such that MN = I the identity matrix (i.e., its the matrix multiplicative inverse, just like for a real x we have 1/x as x's multiplicative inverse).


Q: What does the dash mean in "EXPSPACE - PSPACE"?

A: It means "minus" i.e., set subtraction.


Return to Gabriel Robins' home page


EMail to EMail to robins@cs.virginia.edu