En este momento me quedé con un problema. Parece ser realmente trivial, pero aún así es difícil para mí encontrar una solución adecuada. El problema es: uno tiene dos intervalos y debe encontrar la intersección de ellos.
Por ejemplo:
- La intersección de [0, 3] y [2, 4] es [2, 3]
- La intersección de [-1, 34] y [0, 4] es [0, 4]
- La intersección de [0, 3] y [4, 4] es un conjunto vacío
Está bastante claro que el problema se puede resolver mediante el uso de pruebas de todos los casos posibles, pero llevará mucho tiempo y es muy propenso a errores. ¿Hay alguna manera más fácil de abordar el problema? Si conoces la solución, ayúdame, por favor. Estaré muy agradecido.
algorithms
interval-arithmetic
ohidano
fuente
fuente
Respuestas:
Podemos definir una solución a este problema de la siguiente manera. Suponga que los intervalos de entrada se pueden definir como e , mientras que el intervalo de salida se define como . Podemos encontrar la intersección haciendo lo siguiente:I b = [ b s , b e ] I o = [ o s , o e ] I o = I a ⋂ I bIa=[as,ae] Ib=[bs,be] Io=[os,oe] Io=Ia⋂Ib
if ( o ) { return }a s > b e ∅bs>ae as>be ∅
más {
volver[os,oe]
}
fuente
Supongamos que solo tenemos dos intervalos de entrada.
fuente
De otra manera simple
Dado:
2 Intervalos
Intervalo 1 : (inicio1, final1)
Intervalo 2 : (inicio2, final2)
Requerido:
condición booleana para verificar si ambos intervalos están intersectados o no
Solución: Las
siguientes DOS condiciones deben ser ciertas para considerar que 2 intervalos están intersectados:
1. end2> = start1
2. start2 <= end1
fuente