una tabla de 6 columnas y 30.000 filas,
todos los elementos son enteros del 1 al 50,
cada fila están ordenados ascendentemente, y no puede haber ninguno repetido.
quiero saber el número de elementos coincidentes que hay entre cualquier pareja de filas...
dificultad viene a la hora de buscar una solución lo más rápida posible ya que comparar 30.000 filas con todas las demás son unos 450 millones de comparaciones solo a nivel de fila con fila...
Más luego las comparaciones de los números dentro de cada pareja de filas....
Particularmente este tipo de problemas tratándose de números enteros tiene una fácil solución, más cuando se conoce el número mayor de la serie y especialmente si es lo más pequeño posible, en tu caso concurren las 3 situaciones. La solución no lleva más de una décima de segundo para las 30.000 filas, he utuilizado algoritmos similares para varios cientos de millones y llevaba aproximadamente unos 20 minutos, creo recordar que la última vez utilicé uno de unos 10 millones y tardó unos 35 segundos (en mi equipo de casa que va a 1500Mhz.).
No obstante para ponerte un ejemplo de código debo entender exactamente que tratas de decir con: 'número de elementos coincidentes que hay entre cualquier pareja de filas', ya que es obvio que no está claramente especificado que pretendes hacer, hay un puñado de cosas diferentes y parecidas entre sí que se 'acoplan' a ese concepto de forma generalizada. Esto es:
1 tu quieres recorrer todas las filas y desechar primero todas las repetidas (que haya una única copia de cada una de ellas si/no).
2 recorrer todas las filas y encontrar todas las coincidencias de al menos 1 elemento (columna) con respecto a 1 fila concreta si/no.
3 Ordenar todas las filas en orden ascendente/descendente si/no.
4 Cuando varía un elemento se considera una variación sólo si está en la misma posición, o en cualquier posición si/no, ...
5 ,6 , 7 etc...
Responde a esto y te expongo un par de ejemplos que resuelven lo 1º y lo 3º a la vez en sólo 1 recorrido y lo 2º y/o lo 4º en otro recorrido. Si tienes 30.000 filas un recorrido es un bucle de 30.000 filas.