Journal

May 2, 2004:
This past Wednesday were the presentations. It was a nerveracking experience, but I managed to make it through unscathed. I've made my final updates to my webpage. I've uploaded the code to my project as well as a help file to run the program and add algorithms if needed. Now I just have to get through the defense.

April 25, 2004:
I went to see Dr. McVey this week, and she gave me some last minute suggestions. One of them being to use the status bar much more. Also, reseting the graph at the start of each running of the algorithm.

April 12, 2004:
I've made some more progress on my program. I've implemented Warshall's algorithm, although I'm still trying to figure out a way to animate it. It's very different from the other algorithms. Also, I've got a dialog box that opens when a user chooses an algorithm. The dialog box allows the user to choose a source vertex and allows them to enter a speed for the animation. I'm still trying to figure out a way to let a user step through an algorithm.

April 4, 2004:
I've completed two more algorithms this week. I've finally gotten Prim's working, and I also got Dijkstra's working. I'm also close to getting Connected Components done, however, it's still not working like it should. Also, after talking with Dr. Pankratz, I've gotten a clarification on saving and loading. I'm going to have to have two types of files. One a user can type out and produce a graph when opened. The other will be produced by the program when a user saves, and will save the locations of the vertices.

March 28, 2004:
I've made some more progress on my program this week. I had a problem with the scroll bars and the points not being corrected when the user scrolled. After talking with Dr. McVey, I have that fixed. I'm still working on the other algorithms. I've gotten closer to getting Prim's working, although it still has a couple of quirks I have to figure out.

March 21, 2004:
Well, after working a bunch on my program over spring break, I've made a lot of progress. I've got things working with both weighted and non-weighted edges, as well as directed and undirected edges. There are still a few quirks to be ironed out there yet. I got it to save a graph to a file and to open the file and reproduce the graph. However, I'm still having trouble with getting it to open a text file and produce a graph from it. My big progress, however, has been with the algorithms. I've gotten Depth First Search, Breadth First Search, and Kruskal's algorithm all working correctly. I've also been working on Prim's algorithm and Connected Components, but those are both giving me fits.

March 7, 2004:
With the help of Dr. Pankratz and some algebra, I finally have nice looking arrow tips on the edges. I also ran a test algorithm which goes through the list of vertices and colors each one. Right now I have a one second delay in between each coloring, however, when I implement the actual algorithms, I'll have a slider bar so the user can set the speed. I also added a status bar to the program which shows the current mode the user is in, either vertex or edge mode.

February 29, 2004:
With the help of Dr. Pankratz, I figured out a way to calculate a point on a line. Using similar triangles, I can calculate the point I want to output the arrows on. I'm still trying to figure out how to output a nice looking arrow. Right now I'm using the slope of the perpendicular line, however, since the slope changes when you move a vertex, so does the arrow. It doesn't look very pretty.

February 22, 2004:
I've made some more progress in my program. I'm pretty close to having all the graph building and editing requirements done. I've figured out a way to calculate a point on a line and draw an arrow there, however, I still have to figure out how to get the arrow to point in the right direction. I also figured out a way to show if there are two edges each pointing in a different direction between the same two points in a directed graph. I'm also close to being able to save and load graphs, however, there's still a little quirk I need to figure out before it works.

February 15, 2004:
I've implemented a lot of the required features into my program. I can add vertices and edges using a dialog box in addition to clicking on the window. I've gotten weights for all the edges. I can right click on a vertex to either rename it or delete it. I can also right click on an edge to change the edge's weight or delete it. I'm still working on making edges directed or undirected, as there is no function in MFC to draw a line with an arrow, and after talking to Dr. McVey, we're trying to figure out how to do it. Also, in my meeting with Dr. McVey, she noticed that sometimes edges draw on top of vertices and sometimes they didn't. I fixed that by first drawing all the edges first and then all the vertices, instead of drawing the each vertex and all its edges together as I went through the adjacency lists.

February 8, 2004:
I talked to Dr. McVey again this week for advice on how to implement edges. She suggesting creating a vertex class and an edge class. Each vertex should have its location on the screen, a label, a color, a weight, and a list of adjacent vertices. Each edge should have a color, which two vertices it connects, whether it's directed or undirected, and a weight, if the user chooses a weighted graph. After working on it all weekend, I've implemented the classes, and the list of adjacent vertices for each vertices. Right now, I'm still working on saving the edges in both the code and on the screen.

February 2, 2004:
After spending much of the weekend working on my project, I've got some of graph drawing completed. Right now, I can click on the screen to produce a vertex, which I throw into an array. The program can also detect an edge when you click on a vertex, however, I'm still trying to figure out how to draw them. Once I figure that out, I'll then work on reading and writing to files.

January 29, 2004:
I met with Dr. McVey, and she outlined some of the requirements I need to target early on. First, be able to point and click on the screen to create a vertex. Also, be able to create an edge between two vertices by clicking on them. Another requirement is to be able to save a graph to a file, and also open a graph from a file. Using a single document interface rather than a frame window helps this a lot with a function called Serialize, which does a lot of it for you. There should be two types of files. One will just have vertices and edges. Another will also incorporate screen position, so when you have a graph, it will be in the exact position it was when you open it.

January 24, 2004:
My web page is now up and running. Right now, it's very bare bones, but at least it's something. I received my project this week, a Graph Algorithm Animation. It's a program I need to create to animate different graph algorithms with a number of different features that Dr. McVey can use when teaching CS 321. Right now I'm brushing up on all the different algorithms I need to implement, as well as reacquainting myself with an old friend known as MFC. I'm looking forward to this project. Check back soon!

Home