그러나 시퀀스는 서로 독립적입니까? 그렇다면 한 번 로드된 시퀀스의 날짜에 대해 한 번에 주기를 만드는 것이 불가능한 이유는 무엇입니까? 그런데 여기에서는 효과적인 순환 알고리즘으로 전환하는 것이 가능할 수도 있지만 이것은 운이 좋은 것입니다. 백만 x 백만 차원이 유지되고 파일을 한 번 읽습니다.
물론 일반적으로 다음 반복에서 단계 수가 동일하게 유지되는(즉, 계산이 진행됨에 따라 검색 영역이 좁아지지 않는) 문제는 특별히 강건해 보이지 않습니다. 그러나 이것은 물론 주관적입니다.
Сделки в разных последовательностях разные, по времени распределены неравномерно (и в каждой последовательности по своему). Сделок разное количество. Но все - в интервале от Даты1 до Даты2.
작업은 M분 단위로 D1에서 D2로 이동하고(특히 모든 시퀀스의 트랜잭션 포인트별로) K 기준에 따라 다른 것보다 더 나은 시퀀스를 찾는 것입니다(별도 가장 좋은 순서를 찾고 기준에 따라 전체 세트를 정렬하고 상위 10개를 표시하지만 이것은 선택 사항이며 아직 필수는 아닙니다).
기준 K는 해당 시퀀스의 X 이전 트랜잭션을 기반으로 계산되며 계산에서 X 트랜잭션 각각에 대한 거의 모든 정보가 사용됩니다(예: 이익만 있으면 충분하지 않음).
다른 순서의 트랜잭션은 시간이 지남에 따라 고르지 않게 분포되며 각 순서에서 고유한 방식으로 분산됩니다. 거래는 다양합니다. 그러나 모든 것은 Date1에서 Date2까지의 간격에 있습니다.
작업은 M분 단위로 D1에서 D2로 이동하고(특히 모든 시퀀스의 트랜잭션 포인트별로) K 기준에 따라 다른 것보다 더 나은 시퀀스를 찾는 것입니다(별도 가장 좋은 순서를 찾고 기준에 따라 전체 세트를 정렬하고 상위 10개를 표시하지만 이것은 선택 사항이며 아직 필수는 아닙니다).
...
어딘지 모르겠어
날짜 1에서 날짜 2 사이의 모든 기준이 있습니다.
퇴비통 :
그런거야.
그리고 나서 "필요한 날짜"가 선택된 시퀀스에서 트랜잭션의 종료 시점으로 이동하고 알고리즘이 반복됩니다.
그래서 백만 번 더 =)
즉, 다음을 읽습니다.
파일을 Date1에서 Date2 까지 여러 간격으로 분할하지 않는 이유는 무엇입니까? 닫을 수 있는 작업 시퀀스가 있습니까?
그러나 시퀀스는 서로 독립적입니까? 그렇다면 한 번 로드된 시퀀스의 날짜에 대해 한 번에 주기를 만드는 것이 불가능한 이유는 무엇입니까? 그런데 여기에서는 효과적인 순환 알고리즘으로 전환하는 것이 가능할 수도 있지만 이것은 운이 좋은 것입니다. 백만 x 백만 차원이 유지되고 파일을 한 번 읽습니다.
물론 일반적으로 다음 반복에서 단계 수가 동일하게 유지되는(즉, 계산이 진행됨에 따라 검색 영역이 좁아지지 않는) 문제는 특별히 강건해 보이지 않습니다. 그러나 이것은 물론 주관적입니다.
Сделки в разных последовательностях разные, по времени распределены неравномерно (и в каждой последовательности по своему). Сделок разное количество. Но все - в интервале от Даты1 до Даты2.
작업은 M분 단위로 D1에서 D2로 이동하고(특히 모든 시퀀스의 트랜잭션 포인트별로) K 기준에 따라 다른 것보다 더 나은 시퀀스를 찾는 것입니다(별도 가장 좋은 순서를 찾고 기준에 따라 전체 세트를 정렬하고 상위 10개를 표시하지만 이것은 선택 사항이며 아직 필수는 아닙니다).
기준 K는 해당 시퀀스의 X 이전 트랜잭션을 기반으로 계산되며 계산에서 X 트랜잭션 각각에 대한 거의 모든 정보가 사용됩니다(예: 이익만 있으면 충분하지 않음).
여기에서 시작했어야 했습니다.
다음을 올바르게 이해했습니까?
1) 20GB 파일은 시간순으로 정렬된 약 백만 개의 시퀀스로 구성됩니다.
2) 각 시퀀스의 크기는 다를 수 있으며 시퀀스에 포함 된 트랜잭션 수에 따라 다릅니다.
3) 평균적으로 시퀀스의 크기는 20/10^6 = 20Mb입니다. 하나의 시퀀스를 완전히 다운로드한다고 보장할 수 있습니까?
4) 계수 K는 주어진 시퀀스 내의 트랜잭션에만 의존합니다.
5) 각 시퀀스에 대해 K(10^6개의 총점)를 찾고 상위 10개를 선택해야 합니다.
그리고 시퀀스 사이의 거리 값으로 다른 파일을 생성하면.
1) 다운로드할 수 있는 시퀀스의 수를 확인하고 그 사이의 거리를 합산합니다(합의 중간 값 유지).
2) 파일에서 RAM으로 이 거리를 읽습니다.
3) 각 시퀀스에 대해 검색 알고리즘 K를 실행합니다(1단계에서 계산된 부분합을 저장하기 때문에 시퀀스의 시작 위치를 알고 있습니다)
4) 시작점 1 다시 약간 앞으로 이동
상위 10위의 경우:
n - K의 총 값, m - 최고 수.
1) 모든 K를 찾을 수 있습니다. 그런 다음 힙 데이터 구조를 사용하여 가장 좋은 것의 필요한 수를 선택합니다(힙 가져오기 O(n), 최상의 O(log n) 곱하기 m, 메모리 공간 - n) 선택
2) 필요한 수 - m 조각(예: 10)을 즉시 계산하고 정렬하고 이진 검색을 사용하여 나머지 K의 삽입점을 찾습니다.
(1차 정렬 O(m*log m), 삽입 검색 O(log m) 횟수(nm), 삽입 O(1), 메모리 공간 - m)
캐시 제한을 초과하면 이러한 차원에 대한 재귀가 떨어집니다.
3) 평균적으로 시퀀스의 크기는 20/10^6 = 20Mb입니다. 하나의 시퀀스를 완전히 다운로드한다고 보장할 수 있습니까?
일반적으로 본질을 파악하지 못하고 무엇이 필요하고 무엇을 제공하는지 (((
А потом "нужная дата" сдвигается на точку закрытия сделки из выбранной последовательности и алгоритм повторяется.
1gb = 1000mb = 10^6kb이기 때문에 예 20/10^6 = 20kb
우리가 SQL을 향해 간다면
이것은 개발 단계에서 상당히 느릴 수 있습니다.
이 옵션을 선택하면 저장 프로시저를 사용하여 모든 비즈니스 논리를 빌드하는 것이 좋습니다.
전문가는 서버에 요청을 보내고 완전히 준비된 결과를 얻는 두 가지 기능만 남겨둡니다.
서버의 모든 계산
사실, 인터넷에서 SQL 서버를 설치하는 방법에 대한 많은 설명을 찾을 수 있습니다.
( 예를 들어 ORACL,SYBASE + CENTOS ) ORACL,SYBASE,MS SQL+WINDOWS 별도 시스템
ORACL - 배우기 조금 더 어렵습니다 - 더 적은 수의 전문가, 더 적은 문헌
MS SQL - 아마도 웹 및 기타 문헌에서 가장 많은 정보
여기에는 특별한 어려움이 없을 것입니다 - 상점의 인터넷에는 많은 설명이 있습니다. 더 많은 책이 있습니다
매개 변수의 MSSQL 2012가 ORACL에 가까워졌습니다. 이미 2014가 있습니다.
SQL + LINUX 번들의 선택은 일반적으로 산업 운영에서 선택되며 LINUX에 대한 지식이 없으면 WINDOWS를 사용하는 것이 좋습니다.
MSSQL은 볼이지만 제한은 1코어, 1GB 메모리 및 10GB 데이터베이스를 사용합니다.
나머지는 지불됩니다.
...
유사한 트랜잭션 시퀀스가 많이 있으며 각 시퀀스는 시간별로 정렬됩니다.
다른 순서의 트랜잭션은 시간이 지남에 따라 고르지 않게 분포되며 각 순서에서 고유한 방식으로 분산됩니다. 거래는 다양합니다. 그러나 모든 것은 Date1에서 Date2까지의 간격에 있습니다.
작업은 M분 단위로 D1에서 D2로 이동하고(특히 모든 시퀀스의 트랜잭션 포인트별로) K 기준에 따라 다른 것보다 더 나은 시퀀스를 찾는 것입니다(별도 가장 좋은 순서를 찾고 기준에 따라 전체 세트를 정렬하고 상위 10개를 표시하지만 이것은 선택 사항이며 아직 필수는 아닙니다).
...어딘지 모르겠어
날짜 1에서 날짜 2 사이의 모든 기준이 있습니다.
그런거야.
그리고 나서 "필요한 날짜"가 선택된 시퀀스에서 트랜잭션의 종료 시점으로 이동하고 알고리즘이 반복됩니다.
그래서 백만 번 더 =)
즉, 다음을 읽습니다.
파일을 Date1에서 Date2 까지 여러 간격으로 분할하지 않는 이유는 무엇입니까? 닫을 수 있는 작업 시퀀스가 있습니까?
어딘지 모르겠어
날짜 1에서 날짜 2 사이의 모든 기준이 있습니다.
즉, 다음을 읽습니다.
파일을 Date1에서 Date2 까지 여러 간격으로 분할하지 않는 이유는 무엇입니까? 닫을 수 있는 작업 시퀀스가 있습니까?
작업이 다음과 같은 경우:
주어진 행 1 2 3 4 5 6 7 8 9
예를 들어 너비가 4인 경우 너비 내에서 일부 값(예: 최소값)을 찾으려면 전체 행을 따라 이 너비로 이동해야 합니다.
먼저 1 2 3 4 다음 2 3 4 5 다음 3 4 5 6 다음 4 5 6 7 그 다음 .... 등을 찾아야 합니다.
그런 다음 대기열 데이터 구조 에서 최소값을 유지하여 문제가 해결됩니다.
1) 4개의 스택 데이터 구조를 통해 수행하도록 제안된 mail.ru 비디오 과정에서의 구현
2) 나는 큐 데이터 구조와 데크 데이터 구조를 통해 구두로 구현을 생각해 냈습니다. 아마도 누군가가 이미 이것을 한 적이 있고 그의 이름을 따서 명명되었을 가능성이 큽니다. 찾기만 하면 됩니다.