Escolar Documentos
Profissional Documentos
Cultura Documentos
ao estudo de EEGs
Guilherme Maron
Definição do problema
Definição do problema
• Temos um array de valores A (preço de um
produto, por exemplo) ao longo do tempo.
Definição do problema
• Temos um array de valores A (preço de um
produto, por exemplo) ao longo do tempo.
50 63 60 35 55 52 50 60 50 60 40
Definição do problema
• Temos um array de valores A (preço de um
produto, por exemplo) ao longo do tempo.
50 63 60 35 55 52 50 60 50 60 40
SOMA = 25
E o que isso significa
E o que isso significa
• No exemplo do preço do produto seria a
melhor estratégia de compra / venda.
Comprando-o pelo menor preço e
revendendo-o pelo maior preço no intervalo
observado
E como calcular?
E como calcular?
• Força-bruta
E como calcular?
• Força-bruta
– Separar todos os pares venda/compra (extremos)
E como calcular?
• Força-bruta
– Separar todos os pares venda/compra (extremos)
...
13 -3 -25 20 -3 -2 10 -10 10 -20
...
E como calcular?
• Força-bruta
– Separar todos os pares venda/compra (extremos)
...
13 -3 -25 20 -3 -2 10 -10 10 -20
...
– Calcular as somas e utilizar a maior
E como calcular?
• Força-bruta
– Separar todos os pares venda/compra (extremos)
...
13 -3 -25 20 -3 -2 10 -10 10 -20
...
– Calcular as somas e utilizar a maior
• Complexidade
E como calcular?
• Força-bruta
– Separar todos os pares venda/compra (extremos)
...
13 -3 -25 20 -3 -2 10 -10 10 -20
...
– Calcular as somas e utilizar a maior
• Complexidade
– Ω (n2)
Solução
Solução
• Divide-and-Conquer
Solução
• Divide-and-Conquer
– Há 3 possibilidades de encontrarmos o subarray,
levando-se em consideração um ponto no meio
do array
Solução
• Divide-and-Conquer
– Há 3 possibilidades de encontrarmos o subarray,
levando-se em consideração um ponto no meio
do array
meio
Solução
• Divide-and-Conquer
– Há 3 possibilidades de encontrarmos o subarray,
levando-se em consideração um ponto no meio
do array
meio
Através do meio do array: mid =< sa.start < as.end =< end
Solução
• Divide-and-Conquer
– A parte principal do algoritmo endereça isso:
Solução
Solução
– Tipo: int
Executando (média de 10 execuções)
• Geração de dados
– Tipo: int
– Aleatórios: rand () % 100
Executando (média de 10 execuções)
• Geração de dados
– Tipo: int
– Aleatórios: rand () % 100
– Calculadas as diferenças entre A(i) e A(i – 1)
Executando (média de 10 execuções)
itens mean size min size max size time (ms) memory (MB)
1 1 1 1 <1 1.804
1*102 36 8 90 <1 1.800
1*103 235 28 435 <1 1.812
5*103 161 71 407 <1 1.824
1*104 220 57 561 <1 1.847
5*104 189 60 406 2 1.996
1*105 213 30 426 5 2.187
5*105 261 87 649 26 3.714
1*106 159 27 293 54 5.628
5*106 151 53 412 287 20.917
1*107 126 70 247 578 40.026
5*107 95 24 186 297 192.909
1*108 261 11 675 6093 384.019
5*108 234 93 685 32651 1912.894
Executando (1 execução apenas)
itens mean size min size max size time (ms) memory (MB)
1*109 89 89 89 67125 3823.902
2*109 win32: Erro de compilação
total size of array must not exceed 0x7fffffff bytes
90
80
70
60
50
minSize
40
30
20
10
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Executando (média de 10 execuções)
size
300
250
200
150
size
100
50
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Executando (média de 10 execuções)
maxSize
800
700
600
500
400
maxSize
300
200
100
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Aplicação: EEGs
Aplicação: EEGs
• Altera-se o tipo dos dados para double
Aplicação: EEGs
• Altera-se o tipo dos dados para double
• Os dados são lidos de arquivos de EEGs
Aplicação: EEGs
• Exemplo:
Aplicação: EEGs
• Exemplo:
Aplicação: EEGs
• Calcula-se a diferença entre A(i) e A(i-1), a variação
de potencial nesse tempo
Aplicação: EEGs
• Calcula-se a diferença entre A(i) e A(i-1), a variação
de potencial nesse tempo
Aplicação: EEGs
• Aplica-se a busca do maximum subarray
Aplicação: EEGs
• Aplica-se a busca do maximum subarray
Aplicação: EEGs
• Volta-se ao EEG tendo os índices do maximum
subarray
Aplicação: EEGs
• Volta-se ao EEG tendo os índices do maximum
subarray
Aplicação: EEGs
• Esse, por exemplo, é um EEG do eletrodo F3, que
participa do processamento visual
Aplicação: EEGs
• Esse, por exemplo, é um EEG do eletrodo F3, que
participa do processamento visual
• Um dos componentes mais importantes do
processamento visual é o P3, ou P300
Aplicação: EEGs
• Esse, por exemplo, é um EEG do eletrodo F3, que
participa do processamento visual
• Um dos componentes mais importantes do
processamento visual é o P3, ou P300
• Ele está no maximum subarray encontrado, que
denota um intervalo de máximo estado excitatório
Aplicação: EEGs
• Esse, por exemplo, é um EEG do eletrodo F3, que
participa do processamento visual
• Um dos componentes mais importantes do
processamento visual é o P3, ou P300
• Ele está no maximum subarray encontrado, que
denota um intervalo de máximo estado excitatório
• Se a busca fosse pela menor soma entre os maiores
subarrays teríamos então um intervalo de máximo
estado inibitório