Mas as seqüências são independentes uma da outra, não são? Então por que não podemos percorrer as datas em uma seqüência de carga única de uma só vez? Aqui, a propósito, pode ser possível ir a algum algoritmo de recorrência eficiente, mas isso depende de sua sorte. O tamanho de um milhão sobre um milhão permanecerá, e o arquivo será lido uma vez.
Naturalmente, um problema onde o número de passos na próxima iteração permanece o mesmo (ou seja, a área de busca como computada não fica mais estreita) não parece robusto. Mas isto é subjetivo, é claro.
A recorrência em tais dimensões cairá quando o limite de cache for excedido.
Hámuitas seqüências de transações de tipo único, cada seqüência é ordenada por tempo.
Сделки в разных последовательностях разные, по времени распределены неравномерно (и в каждой последовательности по своему). Сделок разное количество. Но все - в интервале от Даты1 до Даты2.
A tarefa é passar de D1 para D2 com passo de M minutos (ou melhor - exatamente por pontos de fazer negócios de todas as seqüências), encontrar a seqüência que é melhor do que outras pelo critério K (uma tarefa separada - não apenas encontrar a melhor seqüência, mas ordenar todo o conjunto pelo critério e sair os 10 primeiros - mas é uma opção, ainda não necessária).
O critério K é calculado com base em X operações anteriores da seqüência correspondente, enquanto que o cálculo de quase todas as informações sobre cada uma das X operações (apenas o lucro, por exemplo, não é suficiente).
É por aqui que deveríamos ter começado.
Se entendi corretamente o seguinte:
1) Um arquivo de 20 gb consiste em cerca de um milhão de seqüências ordenadas por tempo
2) O tamanho de cada seqüência pode variar e depende do número de negócios que a seqüência contém
3) O tamanho médio de uma sequência é 20/10^6 = 20 Mb, então o que podemos garantir para baixar completamente uma sequência?
4) O coeficiente K depende apenas dos negócios dentro da seqüência dada
5) Para cada seqüência temos que encontrar K (no total 10^6 peças) e selecionar as 10 melhores
A Se criarmos outro arquivo com valores de distâncias entre seqüências.
1) Ver quantas sequências podemos baixar e somar a distância entre elas (mantendo os valores intermediários das somas)
2) Nós lemos a distância do arquivo para a RAM
3) Executar para cada seqüência do algoritmo de busca para encontrar K (sabemos onde começa a seqüência, pois mantemos os subtítulos calculados no passo 1)
4) Novamente o ponto 1 começa um pouco à frente
Quanto aos 10 primeiros:
n é o valor total de K, m é o número de melhores.
1) você pode encontrar todos os K e então, com a ajuda da estrutura de dados amontoados, escolher o número necessário de melhores valores (Get heap O(n), escolher o melhor O(log n) número de vezes m, espaço na memória - n)
2) contar o número necessário - m instâncias (por exemplo, 10), ordená-las e usar uma busca binária para encontrar o ponto de inserção para as demais instâncias K.
(ordenação inicial O(m*log m), busca por inserção O(log m) número de vezes (n-m), inserção O(1), espaço de memória ocupado - m).
Há muitas seqüências de negócios semelhantes, cada seqüência é ordenada por tempo.
As transações em seqüências diferentes são diferentes, distribuídas desigualmente no tempo (e de forma diferente em cada seqüência). O número de acordos é diferente. Mas todos eles estão no intervalo de Data1 a Data2.
A tarefa - passando de D1 para D2 com passo de M minutos (ou melhor - especificamente por pontos de fazer acordos de todas as seqüências), encontrar uma seqüência, que é melhor do que outras pelo critério K (uma tarefa separada - não apenas encontrar a melhor seqüência, mas ordenar todo o conjunto pelo critério e sair os 10 primeiros - mas é uma opção, ainda não necessária).
...
Eu não entendo onde.
Há um critério - todos - no intervalo de Data1 a Data2.
komposter:
Tudo é assim.
E então a "data certa" é deslocada para o ponto de fechamento do negócio da seqüência selecionada e o algoritmo se repete.
E assim por diante um milhão de vezes =)
Ou seja, o próximo é lido.
Por que não dividir o arquivo em muitos intervalos de Data1 a Data2? Haverá seqüências de gastos que podem ser fechadas, certo?
dada uma largura de, por exemplo, 4, você tem que ir com esta largura através de toda a linha para encontrar algum valor dentro da largura (por exemplo, um mínimo):
primeiro você precisa encontrar em 1 2 3 4, depois 2 3 4 5, depois 3 4 5 6, depois 4 5 6 7, depois .... etc.
1) a implementação disto foi sugerida no curso de vídeo mails.ru através de quatro estruturas de dados em pilha
2) Eu inventei verbalmente uma implementação através da estrutura de dados em fila e da estrutura de dados em dec, muito provavelmente, alguém já o fez uma vez e o nome dele já foi dado, eu só preciso encontrá-lo.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Mas as seqüências são independentes uma da outra, não são? Então por que não podemos percorrer as datas em uma seqüência de carga única de uma só vez? Aqui, a propósito, pode ser possível ir a algum algoritmo de recorrência eficiente, mas isso depende de sua sorte. O tamanho de um milhão sobre um milhão permanecerá, e o arquivo será lido uma vez.
Naturalmente, um problema onde o número de passos na próxima iteração permanece o mesmo (ou seja, a área de busca como computada não fica mais estreita) não parece robusto. Mas isto é subjetivo, é claro.
Сделки в разных последовательностях разные, по времени распределены неравномерно (и в каждой последовательности по своему). Сделок разное количество. Но все - в интервале от Даты1 до Даты2.
A tarefa é passar de D1 para D2 com passo de M minutos (ou melhor - exatamente por pontos de fazer negócios de todas as seqüências), encontrar a seqüência que é melhor do que outras pelo critério K (uma tarefa separada - não apenas encontrar a melhor seqüência, mas ordenar todo o conjunto pelo critério e sair os 10 primeiros - mas é uma opção, ainda não necessária).
O critério K é calculado com base em X operações anteriores da seqüência correspondente, enquanto que o cálculo de quase todas as informações sobre cada uma das X operações (apenas o lucro, por exemplo, não é suficiente).
É por aqui que deveríamos ter começado.
Se entendi corretamente o seguinte:
1) Um arquivo de 20 gb consiste em cerca de um milhão de seqüências ordenadas por tempo
2) O tamanho de cada seqüência pode variar e depende do número de negócios que a seqüência contém
3) O tamanho médio de uma sequência é 20/10^6 = 20 Mb, então o que podemos garantir para baixar completamente uma sequência?
4) O coeficiente K depende apenas dos negócios dentro da seqüência dada
5) Para cada seqüência temos que encontrar K (no total 10^6 peças) e selecionar as 10 melhores
A Se criarmos outro arquivo com valores de distâncias entre seqüências.
1) Ver quantas sequências podemos baixar e somar a distância entre elas (mantendo os valores intermediários das somas)
2) Nós lemos a distância do arquivo para a RAM
3) Executar para cada seqüência do algoritmo de busca para encontrar K (sabemos onde começa a seqüência, pois mantemos os subtítulos calculados no passo 1)
4) Novamente o ponto 1 começa um pouco à frente
Quanto aos 10 primeiros:
n é o valor total de K, m é o número de melhores.
1) você pode encontrar todos os K e então, com a ajuda da estrutura de dados amontoados, escolher o número necessário de melhores valores (Get heap O(n), escolher o melhor O(log n) número de vezes m, espaço na memória - n)
2) contar o número necessário - m instâncias (por exemplo, 10), ordená-las e usar uma busca binária para encontrar o ponto de inserção para as demais instâncias K.
(ordenação inicial O(m*log m), busca por inserção O(log m) número de vezes (n-m), inserção O(1), espaço de memória ocupado - m).
A recorrência nestas dimensões cairá quando o limite do cache for excedido.
3) O tamanho médio da seqüência é 20/10^6 = 20 MB, o que irá carregar completamente uma seqüência que podemos garantir?
Sinto que não consigo obter a essência do que é necessário e do que é dado (((
А потом "нужная дата" сдвигается на точку закрытия сделки из выбранной последовательности и алгоритм повторяется.
e sim20/10^6 = 20kb porque 1gb = 1000mb = 10^6kb
Indo em direção a SQL
Isto pode ser bastante lento na fase de aprendizagem.
Se você escolher esta opção, é melhor construir toda a lógica comercial com procedimentos armazenados
deixar o Expert Advisor apenas duas funções, enviar uma solicitação para o servidor e obter um resultado completamente acabado
todos os cálculos no servidor
Na verdade, na web você pode encontrar muitas descrições de como colocar o servidor SQL
( ORACL, SYBASE + CENTOS por exemplo ) ORACL, SYBASE, MS SQL + WINDOWS máquina autônoma
ORACL é um pouco mais complicado de aprender - menos especialistas, menos literatura.
MS SQL - talvez a maior quantidade de informações e mais literatura na web.
não haverá dificuldades - há muitas descrições na web e mais livros na loja.
O MSSQL 2012 por seus parâmetros é muito próximo ao ORACL - já em 2014.
SQL + LINUX é geralmente escolhido para fins de produção e se você não sabe nada sobre LINUX é melhor usar WINDOWS.
Balão MSSQL Expres, mas as restrições usam 1 núcleo, 1Gb de memória e 10Gb de base
outros são pagos.
...
Há muitas seqüências de negócios semelhantes, cada seqüência é ordenada por tempo.
As transações em seqüências diferentes são diferentes, distribuídas desigualmente no tempo (e de forma diferente em cada seqüência). O número de acordos é diferente. Mas todos eles estão no intervalo de Data1 a Data2.
A tarefa - passando de D1 para D2 com passo de M minutos (ou melhor - especificamente por pontos de fazer acordos de todas as seqüências), encontrar uma seqüência, que é melhor do que outras pelo critério K (uma tarefa separada - não apenas encontrar a melhor seqüência, mas ordenar todo o conjunto pelo critério e sair os 10 primeiros - mas é uma opção, ainda não necessária).
...Eu não entendo onde.
Há um critério - todos - no intervalo de Data1 a Data2.
Tudo é assim.
E então a "data certa" é deslocada para o ponto de fechamento do negócio da seqüência selecionada e o algoritmo se repete.
E assim por diante um milhão de vezes =)
Ou seja, o próximo é lido.
Por que não dividir o arquivo em muitos intervalos de Data1 a Data2? Haverá seqüências de gastos que podem ser fechadas, certo?
Eu não entendo onde.
Aqui está o critério - tudo está entre a Data1 e a Data2.
Ou seja, a leitura é a seguinte.
Por que não dividir o arquivo em muitos intervalos de Data1 a Data2? Haverá seqüências de uso que podem ser fechadas, certo?
se o problema for este:
dada uma linha 1 2 3 4 5 6 7 8 9
dada uma largura de, por exemplo, 4, você tem que ir com esta largura através de toda a linha para encontrar algum valor dentro da largura (por exemplo, um mínimo):
primeiro você precisa encontrar em 1 2 3 4, depois 2 3 4 5, depois 3 4 5 6, depois 4 5 6 7, depois .... etc.
então a tarefa é resolvida mantendo o mínimo na estrutura de dados da fila:
1) a implementação disto foi sugerida no curso de vídeo mails.ru através de quatro estruturas de dados em pilha
2) Eu inventei verbalmente uma implementação através da estrutura de dados em fila e da estrutura de dados em dec, muito provavelmente, alguém já o fez uma vez e o nome dele já foi dado, eu só preciso encontrá-lo.