Estoy con la cabeza quemada... y pensé que quizá ustedes me podrían ayudar a restaurar neuronas.
Me está fallando la teoría y la práctica de Arquitecturas de Computadores

No digo Disco porque ese si que es más costoso y lo mio es operación directa sobre la RAM.
El proceso no viene al caso, después de todo se resume en lecturas y escrituras, y demás operaciones en el medio.
El asunto es que se le pueden concebir en el medio diversos algoritmos más o menos invasivos dependiendo de lo que se priorice (velocidad vs I/O e intercambios).
Esto les pregunto porque justamente tengo algoritmos que priorizan más la velocidad de las operaciones en general y que evitan en lo posible tener que estar intercambiando datos innecesariamente. Como así también que tengo otros que si bien hace más operaciones I/O para intercambiar y son menos lentos ofrecen más "estabilidad numérica" en los resultados finales que los otros.
La lectura obviamente se debe proceder y no se puede obviar. Más en términos de escritura es lo que afecta a la ecuación. Digamos que tenemos 2 tipos*:
Tipo 1: los que evitan lo más posible el intercambio de datos (escritura y/o reescritura) pero que no ofrecen total estabilidad numérica al final. Aunque esto de la "inestabilidad" no es demasiado problema ya que está controlado por un factor de tolerancia y precisión y a los resultados finales no le es gran cosa (teóricamente


Tipo 2: los que garantizan más estabilidad pero que tienden a ser menos lentos y en ocasiones hacen más intercambios.
*En realidad se podrían concebir más... hasta algunas intermedias o que de forma más o menos dinámica elijen uno u otro extremo en función de algunas cosas.
Tal intercambio no es más que el simple:
Auxiliar := V[PosA]; V[PosA] := V[PosB]; V[PosB] := Auxiliar;
y/o:
Auxiliar := M[PosiA, PosjA]; M[PosiA, PosjA] := M[PosiB, PosjB]; M[PosiB, PosjB] := Auxiliar;
A fin de "desempatarme" me preguntaba si es que ustedes me podrían aclarar. Comparando en términos generales (y si... se que esto también depende del tipo de RAM) ¿que es más costoso? ¿O podría asumir que son indiferentes?
Por ahora a la vista del ojo, y con pequeña cantidad no distingo gran cosa... me pregunto si para grandes cantidades las cosas cambian (o si deberían cambiar).
Lo que hago es trabajar con varios vectores y matrices. Los someto a muchas operaciones, y de las más variadas. Y la parte delicada, al momento es justamente equilibrar tanto la rapidez de mis algoritmos no sólo en notación-O sino en que también sea lo más "amigable" con el hardware y que garantice buenos resultados obviamente. En otras partes de todo el proceso no tengo la "dicha" de debatirme. Se hace de una manera o esa... Más se llega al punto en donde ahora, para el momento de ordenar o clasificar la información hay variadas técnicas y todo se resume en si intercambiar al máximo, al mínimo, "a lo medio"... en fin.
La otra posibilidad, también salomónica, que estuve barajando es disponer de ambos tipos y dejar que se elija el tipo de algoritmo más apropiado según alguna configuración del sistema. Pero antes que nada, quisiera escuchar sus opiniones.
Saludos,