## U.C. Berkeley CS267: Assignment 5 Specifics

What to turn in: Turn in a complete writeup as usual. The writeup should clearly describe your algorithm, why you chose it, and may also include anything else you'd like to say. We'll verify that your program works during the race, so any graphics you include should help explain your algorithm. We will post a test matrix (later this week) for you to try. Your writeup should include the best solution you can find on this data. HTML writeups are encouraged, as it looks like you might be required to use that format for your final project. So, to summarize, please include:

• Complete clear simple writeup explaining your algorithm, how you used the task queue, etc.
• Any comments you might have on the assignment.
• Your best results of the test matrix that you'll soon get.
• Pointer to the code.

What to assume: Make no assumptions about the size of the matrix (although you can probably guess that it'll be on the larger size). Also, as stated in the assignment, make no assumption about the topology (i.e., Euclidean N-dimensional, Triangle inequality, etc.). You'll be given a square distance matrix in standard matlab format. That is, if 'm' is a matlab matrix, the format will be what matlab writes out in the following command:

```    save filename.mat m -ascii
```
(Note how matlab saves infinities). Please call your program 'ptsp' and accept arguments such that the following will work:
```     (your_path)/ptsp -n {matrix_size} -f {matrix_file}
```
Yes, the '-n' argument is redundant (you can get this information from the matrix_file) but we thought that providing a '-n' argument would make parsing the file a bit easier. Your program, of course, will need to be world executable.

You'll get to run your program for about 5 minutes on a dedicated 32 processor CM5 (i.e., rodin, note 32MB/node). Although this isn't the most accurate way, we'll judge relative program performance by having someone (guess who?) hit ^C about 5 minutes after starting the program. The last complete tour that has been printed to the screen will be accepted as your group's final solution. This means you'll have to balance the I/O printing granularity and computation tradeoff appropriately. Please output the solutions on a single line in a list-of-cities format. Follow it with the current tour length (a nice suggestion from Manuel) so we can get an idea on how things are going. For example, each tour output should be:

```   [1 c2 c3 c4 ... cn 1]
current_tour_length
```
I.e., output a matlab row vector on one line followed by a number on the next. c_i is a number from 2 to N, where N is the number of cities, and c_i != c_j, for i != j. This means we'll start and end with city 1. Each final solution will be verified as a valid tour, and the shortest tour wins. While a group's program is running, one group member will give a brief overview of the algorithm while the rest of us watch and munch on cookies.

The race will occur sometime late next week (the tentative time/place is Thursday, March 23, 5:00pm in the Hogan room), so it's crucial that you get your program working by then (i.e., this is the real deadline). We'll post as soon as we have the confirmed time/place.