Wikidebate/Algoritmo de debate

El algoritmo de debate es un algoritmo recursivo que computa el estado («sostenido» o «refutado») de cualquier argumento a partir de la estructura del árbol de debate en el cual está inserto. El algoritmo captura la idea intuitiva de que un argumento se debe considerar refutado cuando tiene objeciones sin refutar.

Representación gráfica de un árbol de debate, con los argumentos sostenidos pintados de verde, y los refutados de rojo.

Algoritmo editar

 
Animación del algoritmo a medida que crece el árbol de debate. Nótese que las hojas del árbol siempre permanecen verdes.

Dado un árbol de debate, el algoritmo etiqueta cada argumento como «sostenido» o «refutado» según las siguientes definiciones:

  • SOSTENIDO: Sin objeciones sostenidas
  • REFUTADO: Con objeciones sostenidas

Considerando que las objeciones también son argumentos, el algoritmo continúa recursivamente hasta el final del debate (las hojas del árbol de debate). Los argumentos al final no tienen objeciones sostenidas (no tienen objeciones en absoluto) así que el algoritmo las considera sostenidas y a partir de ahí puede resolver el estado de los otros argumentos.

Pseudocódigo editar

La esencia del algoritmo se puede resumir en una simple función recursiva:

function getStatus( argument )
	objections = getObjections( argument )
	for each objection in objections do
		if getStatus( objection ) === SUSTAINED then
			return REFUTED
	return SUSTAINED

La función se llama a sí misma recursivamente hasta que llega a las hojas del árbol de debate. Entonces devuelve «sostenido» para cada hoja y resuelve el estado de todos los demás argumentos en el árbol.

Una formulación alternativa puede ser:

function isSustained( argument )
	objections = getObjections( argument )
	for each objection in objections do
		if isSustained( objection ) then
			return FALSE
	return TRUE

Véase también editar

  • Wikidebate - Proyecto de debate que utiliza el algoritmo
  • DebateTree.js - JavaScript que aplica el algoritmo en los wikidebates