Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Incalzire casa fara gaz/lemne

Incalzire in pardoseala etapizata

Suprataxa card energie?!

Cum era nivelul de trai cam din a...
 probleme cu ochelarii

Impozite pe proprietati de anul v...

teava rezistenta panou apa calda

Acces in Curte din Drum National
 Sub mobila de bucatarie si sub fr...

Rezultat RMN

Numar circuite IPAT si prindere t...

Pareri brgimportchina.ro - teapa ...
 Lucruri inaintea vremurilor lor

Discuții despre TVR Sport HD.

Cost abonament clinica privata

Tremura toata, dar nu de la ro...
 

Baza de date mersul trenurilor

- - - - -
  • Please log in to reply
14 replies to this topic

#1
keeekeeess

keeekeeess

    Active Member

  • Grup: Members
  • Posts: 1,405
  • Înscris: 05.10.2005
Salut,

Vreau sa fac o mica baza de date pentru mersul trenurilor la o aplicatie pentru scoala.

Cea de la CFR e in format XML, dar as prefera SQLite. Cum cauta CFR prin baza de date? O ia linie cu linie?

Nu imi dau seama cum sa fac arhitectura, astfel incat sa pot cauta si dupa statii intermediare si sa afisez traseul in ordinea statiilor.

Exemplu:


traind_id | departs | arrives | route_id
1337	 Iasi	 Pascani	 56

route_id | dep_station | arr_station | time
56	 Val. Lupului	 Letcani	 00:05
56	 Letcani	Tg Frumos	00:10
56	 Tg. Frumos	Podu Iloaiei   00:20
56	 Podu Iloaiei	 Motca		 00:10
56	 Motca		 Pascani 00:30

Vreau sa plec din Letcani si sa ajung in Motca, atunci ar trebui sa imi afiseze Letcani-Tg.Frumos-Podu Iloaiei-Motca, dar Letcani si Motca nu sunt legate prin nimic decat prin statiile intermediare, cu numar variabil, deci nu pot sa fac ceva de genul "WHERE (dep_station,arr_station)=(arr_station,dep_station) deca intre ele sunt mai multe statii"

Cum ar trebui sa fac arhitectura?

Edited by keeekeeess, 05 January 2017 - 01:16.


#2
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,383
  • Înscris: 10.08.2005
in baza de date se face o interogare
rezultatele le returneaza intr-un XML
care este citit si afisat dupa cum a decis designerul web

#3
flowersf

flowersf

    Member

  • Grup: Members
  • Posts: 708
  • Înscris: 21.05.2010
vezi cum e asta https://www.feroviar...rilor-2016-2017

#4
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 19,980
  • Înscris: 24.02.2006

View Postkeeekeeess, on 05 ianuarie 2017 - 01:13, said:

........Vreau sa plec din Letcani si sa ajung in Motca, atunci ar trebui sa imi afiseze Letcani-Tg.Frumos-Podu Iloaiei-Motca, dar Letcani si Motca nu sunt legate prin nimic decat prin statiile intermediare, cu numar variabil, deci nu pot sa fac ceva de genul "WHERE (dep_station,arr_station)=(arr_station,dep_station) deca intre ele sunt mai multe statii"....

iti va fi extrem de greu (spre imposibil) sa gasesti un traseu cu un simplu query intr-o baza de date relationala. poti implementa un algoritm bun si acolo, pentru ca ai iteratii (cursor), variabile si instructiuni de decizie(if, case), dar va fi foarte greu si merge foarte prost.
varianta corecta e sa citesti datele din baza, apoi in aplicatia ta (facuta intr-un limbaj "normal" gen C, C#, pascal etc) sa implementezi un algoritm de caut drumuri in graf ( http://elf.cs.pub.ro...re/laborator-08 ). exista algoritmi consacrati pentru asta (ex: https://en.wikipedia...tra's_algorithm )

#5
keeekeeess

keeekeeess

    Active Member

  • Grup: Members
  • Posts: 1,405
  • Înscris: 05.10.2005
Sa inteleg ca nu este o modalitate simpla pentru asta.

Atunci o voi face in felul urmator, cum pare sa fie si baza de date CFR.

Fiecare trasa are un numar, de la 0 crescator. Astfel, se poate afla directia trenului ordonand statiile dupa cod trasa.

De ex Iasi - Pascani va avea cod_ruta 56, iar trasele Val. Lupului-Letcani, Letcani-Tg Frumos, Tg. Frumos -Podu Iloaiei , Podu Iloaiei-Motca , Motca-Pascani vor avea cod trasa 0,1,2,3,4 etc.


Daca vreau sa plec din Letcani si sa ajung la Podu Iloaei, e de ajuns sa verific daca cod_trasa Letcani e mai mic ca si cod_trasa Podu Iloaiei si in caz pozitiv,

voi afisa toate trasele cu cod_trasa >= cod_trasa_Letcani si cod_trasa <= cod_trasa Podu Iloaiei din ruta 56


Ma gandeam ca este o metoda mai finuta pentru asta Posted Image

Edited by keeekeeess, 05 January 2017 - 09:43.


#6
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 19,980
  • Înscris: 24.02.2006
metoda ta poate functiona, dar nu trateaza cazul in care trebuie sa schimbi trenul intr-o statie intermediara.

#7
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Nu degeaba se studiaza grafurile!

Edited by neagu_laurentiu, 05 January 2017 - 10:47.


#8
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,194
  • Înscris: 24.02.2007
Exista baze de date gandite pentru operatii pe grafuri.

#9
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View Postkeeekeeess, on 05 ianuarie 2017 - 09:42, said:

Sa inteleg ca nu este o modalitate simpla pentru asta.
Mie mi se pare ca varianta cu grafuri este destul de simpla pentru programatori. Chiar si varianta naiva cu Dijkstra e decenta.

#10
aaaa4567

aaaa4567

    Senior Member

  • Grup: Senior Members
  • Posts: 9,475
  • Înscris: 18.10.2011
S-ar putea implementa. Banuiesc ca vrei drumuri minime.

Ceva gen problema comis voiajorului, daca mai mi-aduc bine aminte sau variante. Insa eu as pastra cateva drumuri pe segmentele mari, precalculate (n-ai de ce sa tot aduni 5 distante intre 6 statii intre care n-ai nicio derivatie)... Va trebui sa faci optimizari de genul asta.
https://en.wikipedia...alesman_problem

In cazul trenurilor, problema se simplifica intrucatva deoarece poti considera ca segment o ruta parcursa de la urcare pana la coborare. Poti considera si timpii, poti folosi weighted graphs sau ceva de genul.

Precis a fost studiata problema (o problema similara e calculul rutei optime pt drumul cu avionul), asadar iti sugerez sa cauti...

Baze de date graf-orientate (neo4j) s-ar putea sa ajute, intr-adevar.

Atentie: dau sfaturi din amintite si n-am pretentia ca sunt specialist in algoritmi.

Ai putea si in relational, pastrand undeva distante si rute precalculate (cel putin pe traseele mari). Distante pe care, evident, le calculezi numai o data si apoi optimizezi totul pentru citire. Poti optimiza mult folosind in memory databases si altele de genul (evident si indecsi si toate celelalte) sau poate gasesti o solutie cu OLAP.

De exemplu, din orice orasel trebuie sa mergi numai cateva statii pana la o ruta principala (sa zicem Oradea-Timisoara-Bucuresti). Care ruta este precalculata. Apoi din Bucuresti "te mai plimbi" putin pana unde ai nevoie. Si asta e un fel de backtracking.

Edited by aaaa4567, 25 January 2017 - 00:53.


#11
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,194
  • Înscris: 24.02.2007

View Postaaaa4567, on 25 ianuarie 2017 - 00:36, said:

Ceva gen problema comis voiajorului

Asta-i o problema aparte (good luck in a gasi o solutie eficienta) iar cerinta initiatorului nu merge sprea ea.

#12
aaaa4567

aaaa4567

    Senior Member

  • Grup: Senior Members
  • Posts: 9,475
  • Înscris: 18.10.2011

View Postdani.user, on 26 ianuarie 2017 - 17:42, said:


Asta-i o problema aparte (good luck in a gasi o solutie eficienta) iar cerinta initiatorului nu merge sprea ea.
Stiu ca e o problema eficienta. Exista metode de optimizare, am propus cateva (fara sa-mi bat capul, adevarat). Oricum, ceva destul de clasic.
Eu zic ca cel mai ieftin iese daca precalculeaza segmentele mari. Nu stiu, nu sunt cu capul in domeniul asta, acum. Poate propui altceva.

#13
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 19,980
  • Înscris: 24.02.2006
ce intelegi prin "ieftin"?
daca te referi la optimizari, atunci sa stii ca sunt mai degraba didactice. romania nu are o retea de cai ferate atat de dezvoltata incat sa se simta puternic o astfel de optimizare.

#14
aaaa4567

aaaa4567

    Senior Member

  • Grup: Senior Members
  • Posts: 9,475
  • Înscris: 18.10.2011

View Post_Smiley_, on 26 ianuarie 2017 - 20:28, said:

ce intelegi prin "ieftin"?
daca te referi la optimizari, atunci sa stii ca sunt mai degraba didactice. romania nu are o retea de cai ferate atat de dezvoltata incat sa se simta puternic o astfel de optimizare.
Da, in cazul dat, cred ca da. Nu stiu ce va face initiatorul, dar daca va implementa ceva, poate vine cu niste rezultate.
PS: Mai bine sa incerce (sa scoata un timp de raspuns etc.), mai ales daca e pentru scoala. Poate incerca sa-l incarce cu date sintetice, sa incerce sa faca ceva cat mai scalabil etc. Tocmai ca la lucru nu prea mai ai timp.

#15
lightpoint

lightpoint

    Member

  • Grup: Members
  • Posts: 785
  • Înscris: 16.02.2017

View Postkeeekeeess, on 05 ianuarie 2017 - 01:13, said:

Salut,

Vreau sa fac o mica baza de date pentru mersul trenurilor la o aplicatie pentru scoala.

Cea de la CFR e in format XML, dar as prefera SQLite. Cum cauta CFR prin baza de date? O ia linie cu linie?

esti sigur ca nu cumva te referi la rezultatul unei interogari al unui  WebService public  oferit de serverul CFR ?

LE: nope, se pare ca nu. Conform http://legi-internet...lor-pe-internet, se pare ca daca vrei sa faci o baza de date cu mersul trenurilor esti posibil infractor .Si eu care credeam ca astia mai pot oferi si un WebService  gratis...=)).

Edited by lightpoint, 27 February 2017 - 14:51.


Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate