CSCE 235
Light
Bulb 10
April 21, 2004
1. As described in (Rosen 2003):
“Trees are particularly useful in computer science, where they are employed in a wide range of algorithms. For instance, trees are used to construct efficient algorithms for locating items in a list. They can be used in algorithms, such as Huffman coding, that construct efficient codes saving costs in data transmission and storage. Trees can be used to study games such as checkers and chess and can help determine winning strategies for playing these games. Trees can be used to model procedures carried out using a sequence of decisions. Constructing these models can help determine the computational complexity of algorithms based on a sequence of decisions, such as sorting algorithms.”
Trees can be applied to sorting, searching, storage, optimization, and many other complex problems.
2. We can use a family tree to organize ancestors and descendants. A family tree is convenient. We can find the ancestors of a person quickly, and the descendants of a person quickly as well. We can also use the branches of the trees to figure out the number of generations and the total number of descendants. Think about this: Without a tree, how can you represent a family effectively?
3. One key of applying trees to problem solving is to (a) represent the problem in a tree, and (b) find an efficient tree traversal algorithm to solve the problem. One particular type of trees is a binary search tree. In a binary search tree, the left child is smaller than the right child, and the parent of two children holds the key that is the middle point of the two children. Suppose you want to find a particular child whose value is 8. You start at the root, say, the root’s value (or key) is 4. Since 8 is larger than the root’s value, you move to the right branch of the root. Thus, by comparing only the first root, you are able to cut your search area to half. This makes your search much much faster.
4. A type of trees is a game tree. In a game tree, each vertex is a game state—a possible configuration or position of the game, and each edge is a legal move from one state to another state. The leaves are the final states of the game. Each leaf has a score indicating the goodness of each final state. If final state A indicates that you will win by a landslide, then the leaf has a high score. If final state B indicates that you will lose, then the leaf has a negative score. The key to traverse the tree is to make sure that each state, you pick the move that will most likely lead you to the highest score. Sometimes, each edge has a cost value. Some moves are more costly than other moves. For example, irreversible moves are usually more costly. So, sometimes, these costs are added into the decision making.
5. In Decision Theory and Utility Theory in economics and business, we use trees to represent decision making choices. Each node or vertex is a decision to make. Each branch to a child is a possible choice. The branch or edge is associated with a value indicating the probability that the child state will occur. Each node is also associated with a utility score (payoff or penalty). So, in the decision making process, you want to pick the path of choices that gives the best combination of expected utility (probability multiply utility). This type of trees allows researchers to analyze rationality, automated reasoning, tradeoffs and so on.
6. A spanning tree is a subgraph of a graph G that is a tree containing every vertex of G. It is particularly useful in route management. When the graph G is weighted, a minimum spanning tree is even more useful in optimization. For example, a minimum spanning tree can be used to find the least cost route in a computer network, in the Traveling Salesman problem, and other optimization problems. There are algorithms that help us find the minimum-cost paths. And thus we can identify which edges to remove, which edges to keep. Sometimes, the most costly edge has to be kept to ensure a globally least costly path. Sometimes, a locally least costly edge has to be removed. A minimum spanning tree and its traversal algorithms allow us to do that.