Como ya sabrá, en muchas ocasiones, es necesario marcar algunos elementos de una matriz. Por ejemplo, cuando tenemos una matriz de adyacencia ponderada y nuestro gráfico no está completamente conectado, tenemos que marcar algunos elementos para mostrar que no hay borde entre esos nodos. La pregunta es ¿cómo hacer eso? ¿Es mejor poner NaN o Inf en esos elementos en la matriz? o algo más (como -1)?¿Cuál es la mejor manera de marcar algunos elementos en MATLAB? usando NaN o Inf? ¿o algo mas?
5
A
Respuesta
10
Depende completamente del caso. En el ejemplo que dio una buena solución podría ser usar ceros, ya que los bordes están ponderados, y para muchos propósitos, un borde de 0 de peso es equivalente a ningún borde. Eso es cierto si estás haciendo cosas como algoritmos de flujo/corte.
Generalmente al elegir entre NaN e Inf, me gustaría ir con NaN. Inf tiene algunas propiedades puede que no te como un marcador "no válido":
Inf*(-1) = -Inf
Inf+(-Inf) = NaN
Inf > 10 = True
etc...
Una solución limpia podría ser mantener otra matriz de booleanos, que tiene cierto cuando la conexión es válida, y False en caso contrario. Desperdicia un poco de memoria, pero a menos que tu matriz sea enorme, creo que la legibilidad del código que te dará vale la pena.
Cuestiones relacionadas
- 1. Redis mímico MASTER/MASTER? ¿o algo mas?
- 2. ¿Cuál es la representación interna de inf y NaN?
- 3. Cómo comprobar inf (y | o) NaN en una variable doble
- 4. charAt() o subcadena? ¿Cual es mas rápido?
- 5. python nan and inf values
- 6. ¿Cuál es la mejor manera de marcar un testimonio en XHTML?
- 7. Apache2: mod_wsgi o mod_python, ¿cuál es mejor?
- 8. Cuál es mejor: mysql_connect o mysql_pconnect
- 9. Una función para detectar NaN, NA, Inf, -Inf, etc.?
- 10. La mejor manera de implementar .lastChild usando Prototype o jQuery
- 11. ¿Cuál es la mejor manera de ir en el largo plazo: C, objetivo C o C++?
- 12. Cómo forzar un error si se encuentran valores no finitos (NA, NaN o Inf)
- 13. SecureString para almacenar en memoria y presentar contraseñas? ¿O algo mas?
- 14. Lo que es mejor en CSS: div.algo o simplemente .algo
- 15. La mejor manera de detectar NaN en sombreadores OpenGL
- 16. Backbone.js - Cuál es la mejor manera de marcar una casilla de verificación
- 17. matriz de elementos HTML, nombre = "algo []" o nombre = "algo"?
- 18. ¿Cuál es la mejor manera de vaciar un vector o matriz en AS3?
- 19. ¿Cuál es la mejor manera de comparar programas en Windows?
- 20. ¿Cuál es la mejor manera de separar cadenas utilizando la función string.format() o LINQ?
- 21. Esquema DTD o XML. ¿Cuál es mejor?
- 22. Cuál es mejor - Ext.get() o document.getElementById()
- 23. ¿Cuál es mejor H2 o HSQLDB?
- 24. cuál es mejor ... GATE o RapidMiner
- 25. ¿Cuál es un método mejor? libsvm o svmclassify?
- 26. min o gzip, ¿cuál es mejor?
- 27. JavaScript: ¿qué es NaN, Object o primitive?
- 28. MATLAB: Usando la interpolación para reemplazar los valores faltantes (NaN)
- 29. ¿Cuál es la mejor manera de ejecutar algunos JS inmediatamente después de cargar un elemento?
- 30. ¿Cuál es la mejor manera de almacenar una contraseña o clave privada en un host web?
NaN también tienen algunas sorpresas: NaN == NaN devuelve false! Entonces, en lugar de utilizar isequal(), se debe usar la función isequalwithnans(). – Mikhail
Es isequalwithequalnans() – Jonas
Tiene perfecto sentido que NaN == NaN es falso. ver por ejemplo: http://stackoverflow.com/questions/1843451/why-does-null-null-evaluate-to-false-in-sql-server. –