1 pièce(s) jointe(s)
	
	
		DataStructure/Algo oritentation implementation pour un probleme specifique.
	
	
		Bonjour a tous, quelques conseils/idees seraient le bienvenue pour un probleme auquel je dois faire face, en esperant etre assez clair.
Objets existants:
     Tracks : Id, DetectionId, Position(xy,z), Timestamp
     Detection: Id, Position(xy,z), Timestamp 
     Sachant qu'un tracks change de position avec l'aide des detections qui le font avancer (les positions ne sont pas forcement les memes:smoth).
But:
Avoir la possibilite de verifier que 2 tracks ou plus representent en fait le meme track (effet bias, ou autre )... (utiliser actuellement interpolation qui permet de comparer ce qui constitues les differentes positions des tracks )
Probleme:
Avoir la possibilite de limiter le nombre de comparaisons entre tracks en filterant par plusieurs attributs :
     :Position area (geohashes)
sachant que les tracks se deplacent et peuvent donc changer de area(geohashes).
cela ce fait on the fly, en gros un stream de track arrive (pouvant etre des nouveaus, ou des updates de tracks)
Pièce jointe 596820
J'avais penser garder en memoire 3 concurrentdictionnary:
LastTrackGeohash<TrackId, LastGeohash>  Track already exist in our memory 
TrackPositions<TrackId, LimitedQueue(TrackPosition)> Updated positions in time for the Track (limited by number of points)
TracksPerGeohashes<Geohash, GlobalTrackIds[]>  Tracks list per geohash area.
Track arrive :
recherche dans LastTrackGeohash 
     si il exist pas
         track ajouter dans les 3 dictionnary
si il existe, et que le geohashes sont les memes
         rajoute la nouvelle position dans TrackPositions
si il existe et geohashes different
         je met a jour le LastTrackGeohash
         remove it from  TracksPerGeohasheset 
         add a new entry to the new geohashes for TracksPerGeohasheset
j'espere avoir etait clair. 
Si quelqu'un a une meilleur approche.. 
Merci d'avance.