For several years, I've been interested in how to describe algorithms adequately and have played with a variety of templates for algorithm
description.
I'm not sure that I've got it yet, but I'll discuss the current template's fields in this post and begin to write up algorithm descriptions
and place them on this site. There is now a link for Algorithms on the
Research page.
| Algorithm |
|
The name of the algorithm.
|
| Domain |
|
The domain of objects over which the algorithm operates. This may be elaborated upon in terms of features.
(e.g. "Graphs { -directed, -weighted }").
|
| Aspect |
|
The aspect of the domain that the problem belongs to (e.g. Isomorphism).
|
| Problem |
|
The problem that the algorithm attempts to solve (e.g. Graph Isomorphism).
|
| Approach |
|
The type of approach that the algorithm uses to solve the problem (e.g. Discrimination by equivalence classes).
|
| Author |
|
The designer of the algorithm.
|
| Revision |
|
A zero-based serial number indicating the number of revisions that this document has undergone.
|
| Last changed |
|
The date of the last change to this document.
|
| Objectives |
|
A sentence describing the objectives of the algorithm.
|
| Description |
|
A short description of the problem, the algorithm, and the approach.
|
| Objects |
|
A list of the objects that are used by the algorithm.
|
| Parameters |
|
A list of all of the parameters of the algorithm, including those used to communicate results.
|
| Parameter - Name |
|
The name of the parameter.
|
| Parameter - Type |
|
The type of the parameter, which may be fairly primitive objects (e.g. integer), fairly complex objects (e.g. graph),
or other algorithms.
|
| Parameter - Direction |
|
The direction in which information flows through the parameter (i.e. In, InOut, Out).
|
| Parameter - Description |
|
A description of the problem and the approach, and a detailed description of the algorithm.
|
| References |
|
A list of all algorithm references related to this algorithm.
|
| Refers to |
|
A list of all algorithms that this algorithm refers to.
|
| Referred to by |
|
A list of all algorithms that reference this algorithm.
|
| Admissions |
|
An admission is a statement of fact. The algorithm may state admissions as they become known.
|
| Admission - Name |
|
The name of the admission.
|
| Admission - Template |
|
A template for the admission (e.g. "Graph contains a <K>-clique: <exemplar K-clique>").
|
| Outcomes |
|
Each algorithm terminates with a single outcome. This is a list of the possible outcomes for the algorithm.
|
| Outcome - Name |
|
The name of the outcome.
|
| Outcome - Category |
|
The features of the category of the outcome (e.g. +resolved).
|
| Outcome - Description |
|
A brief description of the outcome
|
| Outcome - Admissions |
|
A list of the admissions that are consistent with the outcome.
|
| Outcome - Post-conditions |
|
A description of the conditions that hold after the algorithm terminates with the outcome (e.g. state of the graph).
|
| Scenarios |
|
A list of the scenarios that the algorithm may encounter.
|
| Scenario - Name |
|
The name of the scenario.
|
| Scenario - Description |
|
A brief description of the scenario.
|
| Scenario - Preconditions |
|
Preconditions that must hold for the scenario to be in play.
|
| Scenario - Invariants |
|
Invariants that hold during the course of the scenario.
|
| Scenario - Preparation |
|
A description of the preparations that are needed for processing under this scenario once it is confirmed.
|
| Scenario - Cost |
|
An estimation of the cost of processing under this scenario.
|
| Scenario - Possible Outcomes |
|
A list of the possible outcomes for this scenario.
|
| Local objects |
|
A list of local objects that will be used during the course of the algorithm.
|
| Pseudocode |
|
Pseudocode for the algorithm. All of the objects that have been defined (e.g. parameters, algorithm references, local objects)
may be referenced within the pseudocode.
|
| Examples |
|
One or more detailed examples of the operation of the algorith. One example per scenario would be preferred.
|
| Complexity |
|
Complexity analyses of the algorithm.
|
| Worst-case Time Complexity |
|
An analysis of the worst-case time complexity of the algorithm.
|
| Worst-case Space Complexity |
|
An analysis of the worst-case space complexity of the algorithm.
|
| Metrics |
|
A list of the metrics that may be of interest that are related to this algorithm.
|
| Descriptive Metrics |
|
A list of the metrics that describe the objects of interest in the domain.
|
| Initial-State Metrics |
|
A list of metrics that describe the objects of interest in the domain before the algorithm begins.
|
| Operation Metrics |
|
A list of metrics that describe the operations performed during the course of the algorithm.
|
| Final-State Metrics |
|
A list of metrics that describe the objects of interest in the domain after the algorithm terminates.
|
| Predictive Metrics |
|
A list of metrics that have some predictive value.
|
| Outcome-Predictive Metrics |
|
A list of metrics that predict the outcome of the application of the algorithm.
|
| Metric-Predictive Metrics |
|
A list of metrics that predict the value of other metrics.
|
| Cost-Predictive Metrics |
|
A list of metrics that predict the cost of executing the algorithm.
|
| Discussion |
|
A discussion about any and all aspects of the problem and the algorithm.
|
| Tasks |
|
A list of tasks that remain in the development of the algorithm. This may include open questions.
|
| Comments |
|
An unstructured list of comments.
|