Algoritmo de patio de clasificación

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 3 de junio de 2021; las comprobaciones requieren 2 ediciones .

El algoritmo de la yarda de clasificación  es una forma de analizar expresiones matemáticas y/o lógicas representadas en notación infija . Se puede utilizar para producir una notación polaca inversa o una salida de árbol de sintaxis abstracta . El algoritmo fue propuesto por Edsger Dijkstra y lo denominó "algoritmo del patio de maniobras", ya que se asemeja al funcionamiento de un patio de maniobras ferroviario .

Al igual que calcular los valores de las expresiones en notación polaca inversa, el algoritmo funciona mediante una pila . La notación infija de expresiones matemáticas es la más utilizada por las personas, sus ejemplos son 2+4 y 3+6*(3-2). Para convertir a notación polaca inversa, se utilizan 2 cadenas: entrada y salida, y una pila para almacenar declaraciones que aún no se agregaron a la cola de salida. Al convertir, el algoritmo lee 1 carácter y realiza acciones en función de este carácter.

Algoritmo

Cada token-número, función u operador se imprime solo una vez, y cada token-función, operador o paréntesis se agregará y eliminará de la pila una vez. Número constante de operaciones por token, complejidad lineal del algoritmo O( n ).

Enlaces