elenur escribió:Es tu opinión. Cuando me tocó hacerlo a mí, consulté con un experto en sudokus y según él, consideraba un sudoku correcto cuando se podía resolver utilizando exclusivamente las "reglas lógicas".
Exacto, reglas lógicas. De nuevo, backtracking por si sólo no aplica ninguna de las reglas lógicas usadas para resolver un sudoku, por muy lógico que a ti te parezca el algoritmo.
elenur escribió: Y esto, según él (y yo cuando lo comprobé) sólo ocurre cuando sólo hay una solución.
Sin embargo tú y él estáis equivocados por una razón sencilla pero poderosa: yo he encontrado una contradicción. Ahora mismo no lo tengo a mano, pero en un libro de sudokus, el primero que aparece lo resolví a mano (muy sencillo) sin ningún problema. Y resuelto con backtracking simple sin ningún típo de heurística: tachán! Una solución completamente distinta a la obtenida a mano. Por cierto el libro traía las soluciones, no vaya a ser que ahora se insinúe que no se resolver sudokus.
elenur escribió:Lo cual es lo lógico y esperable, porque si existe más de una solución nunca podrás inferir ningún número más (sin descartar otros), puesto que habría al menos dos posibilidades válidas en alguna casilla.
Lo primero esos sudokus existen: Sudokus diabólicos.
Lo segundo, y suponiendo sudokus no diabólicos, efectivamente la única solución LOGICA de un sudoku BIEN FORMADO es ir infiriendo números a partir de los iniciales. Ahora dime: dados unos números iniciales, que tienen solución lógica, es decir, partimos de un sudoku bien formado, ¿es IMPOSIBLE que exista otro conjunto de números que son solución (cumplen las restricciones del problema) pero que es una solución NO es inferible a traves de reglas lógicas? La respuesta es SI.
elenur escribió:¿Por qué te enciendes? No me refería a nada de eso. Simplemente, la reducción al absurdo supone cierta la negación de la conclusión y avanza a partir de ahí hasta intentar encontrar una contradicción. De la misma forma, puedes entender que la fuerza bruta tiene varias ramas posibles y supone que la que toma es la válida y avanza a partir de ahí hasta que comprueba si una solución completa es tal.
Ambos métodos son perfectamente lógicos, obviamente.
Reducción al absurdo es suponer cierta una hipótesis A basada en ciertas premisas, y encontrar una demostración lógica con dichas premisas que haga cierto ¬A, demuestra una contradicción, y por tanto que la hipótesis A es falsa.
Si entiendo lo que dices backtracking podría plantearse como una reducción al absurdo: partiendo de una solución parcial, buscamos una serie de valores que nos den una solución no válida. Sin embargo me mantengo: no es una reducción al absurdo, ya que no operas con premisas que te permitan negar la solución parcial sino que das valores y esperas encontrar la solución correcta, luego no hay ningún tipo de decisión lógica que acompañe al algoritmo de backtracking a no ser que metas heurísticas.
Y dale, que no. Tienes un error de base: Un puzzle tiene las mismas soluciones lo resuelvas como lo resuelvas. Una solución del problema del Sudoku está perfectamente especificada: Cumple X restricciones, y si encuentras unos datos que satisfacen dichas restricciones, entonces ES solución.
El método que emplees para obtener una solución no importa una mierda para decidir si algo es solución o no.
Nadie dice que el "problema del Sudoku" deba resolverse sólo con una serie de reglas lógicas y si no no es solución. De hecho, cada persona aplica las reglas lógicas que le da la gana para resolverlo, según su experiencia y habilidad.
Por supuesto que el problema del sudoku debe resolverse con una serie de reglas lógicas. No veré a la gente haciendo backtracking a papel y lápiz. Y si quieres resolver un sudoku paso a paso como lo haría una persona (que es este caso), más te vale seguir la lógica de resolución del problema, no la que a ti te de la gana.
Tú me estás dando la definición matemática de puzzle y todo lo que tu quieras. Yo te digo que hay sudokus bien formados con varias soluciones matemáticas posibles al problema. Y te hablo del mundo real, de los que soluciona la gente de forma sencilla sin sudar.
Y sí, el algoritmo del Sudoku no aplica reglas "inteligentes", pero es completamente lógico a pesar de ello: Si tú vas ampliando una solución parcial con opciones válidas, entonces encuentras sólo soluciones y además, todas ellas.
Hay formas de descartar un número para una casilla que requieren mucha más vista de la aplica un algoritmo de backtracking, por ejemplo mirando filas adyacentes a la casilla en cuestión, los valores en otras cajas... Eso es una decisión lógica, heurísticas para reducir el dominio de cada casilla y así poder saber cuál es o bien la casilla correcta a escoger, o bien la que más probabilidades tiene de conseguir que provoque una poda.
La definición clásica de backtracking simplemente no tiene estas cosas en cuenta.
Sí, probé unas cuantas aparentemente "buenas" y "obvias" precisamente para ver que las heurísticas pueden ser beneficiosas o no según el tamaño del problema (en la práctica con implementaciones reales).
En cualquier caso, no sé qué mosca te ha picado, simplemente lo decía como detalle informativo, no para desprestigiar tus heurísticas (que ni sé cuáles son porque no he leído el fichero) y que no he puesto en duda que sean de lo mejorcito.
[/quote]
Si claro, como detalle informativo. Pues tenías un deje muy inquisitivo para informar de algo que no venía ni a cuento, pidiéndome justificaciones para problemas que no estamos tratando. A mi me ha sonado a intento fallido de demostrar algo, pero a lo mejor es que estoy "encendido"

En fin, yo ya he perdido demasiado tiempo en esto. La pena es que el libro con problemas y el libro de técnicas de resolución de sudokus los tengo en casa de mis padres, que si no te ponía exactamente los sudokus de ejemplo para que lo vieras por ti mismo. De todas maneras tampoco tengo necesidad ni tiempo de demostrarte nada. Allá cada cual.
PD: Lo de no tengo tiempo no lo digo de malas, de verdad que estoy liado y como me meta en discusiones (amigables) en foros, me conozco y no paro