11.3 Using an Agenda

Active chart parsers usually make use of an agenda. An agenda is a datastructure that keeps track of the things that we still have to do. When new edges are created, we have to remember that we have to look at them to see whether they can be combined with other edges in any way. To not forget this we store them in the agenda. (They are not added directly to the chart as with the passive chart parser.) We will then take one edge at a time from the agenda, add it to the chart, and then use it to build new edges.

You can think of the agenda as a list of edges. When we take edges from the agenda, we will always take them from the beginning of the list. So, by modifying where we insert new edges into this list, we change the order in which edges are processed.

We are going to treat the agenda as a stack. That is, we add new edges to the front of the agenda. This leads to a depth-first search strategy. Another possibility would be to add new edges to the end of the agenda. The corresponding datastructure is called queue and would lead to breadth-first search. Finally, you could also order the elements in the agenda due to some other criterion, such as, e.g., how probable it is that the edges will lead to a parse.

Patrick Blackburn and Kristina Striegnitz
Version 1.2.4 (20020829)