Pesquisa binaria

4 respostas
M

Alguem poderia me ajudar a comecar … rsrsrs

O analista de sistemas da empresa X deverá trabalhar com um arquivo ordenado contendo 30000 registros. O arquivo será armazenado num disco com bloco de 1024 bytes. Os registros serão de formato fixo de tamanho 100 bytes. Considerando que, para acessar um registro do arquivo será empregada pesquisa binária, o numero de acessos de bloco ao arquivo, p/ recuperar a informacao de um registro, será igual a

a)6
b)12
c)14
d)28
e)32

4 Respostas

T

O tamanho do arquivo em blocos é (30000 * 100) / 1024 =~ 2930 blocos.
Ao fazer a busca iremos supor que se um bloco for lido uma vez, devido ao tamanho do arquivo, que é relativamente pequeno, ele não será lido novamente do disco, e sim do cache. Além disso, não iremos contar o acesso a um registro que esteja dividido entre dois blocos como sendo a leitura de 2 blocos, mas sim como se fosse a leitura de um único bloco, para simplificar.
Você sabe que é necessário acessar no máximo 15 registros, pois 2 elevado a 15 é 32768.
Sabemos que a potência de 2 mais próxima de, mas superior a 2930 é 4096 = 2 elevado a 12.
Então será necessário varrer no máximo 12 blocos se não contarmos esses acessos a registros que estiverem divididos entre dois blocos.
Não sei se preciso marcar a letra c) para levar em conta esses registros que estão divididos entre dois blocos (não fiz a conta certa).
Isso é questão de concurso? Tem dois problemas aqui, se for questão de concurso.
a) Você precisa fazer as suposições acima que eu fiz, para poder marcar “b”, ou fazer uma conta mais complicada, para marcar “c”.
b) Ele disse “o número de acessos”, não “o número máximo de acessos”.

M

thingol:
O tamanho do arquivo em blocos é (30000 * 100) / 1024 =~ 2930 blocos.
Ao fazer a busca iremos supor que se um bloco for lido uma vez, devido ao tamanho do arquivo, que é relativamente pequeno, ele não será lido novamente do disco, e sim do cache. Além disso, não iremos contar o acesso a um registro que esteja dividido entre dois blocos como sendo a leitura de 2 blocos, mas sim como se fosse a leitura de um único bloco, para simplificar.
Você sabe que é necessário acessar no máximo 15 registros, pois 2 elevado a 15 é 32768.
Sabemos que a potência de 2 mais próxima de, mas superior a 2930 é 4096 = 2 elevado a 12.
Então será necessário varrer no máximo 12 blocos se não contarmos esses acessos a registros que estiverem divididos entre dois blocos.
Não sei se preciso marcar a letra c) para levar em conta esses registros que estão divididos entre dois blocos (não fiz a conta certa).
Isso é questão de concurso? Tem dois problemas aqui, se for questão de concurso.
a) Você precisa fazer as suposições acima que eu fiz, para poder marcar “b”, ou fazer uma conta mais complicada, para marcar “c”.
b) Ele disse “o número de acessos”, não “o número máximo de acessos”.

é de concurso sim !!
nossa é meio chatinha rsrsrs
ta um pouco confuso …
flw !!

T

Essa questão deve ser evidente para quem fez alguma matéria de engenharia de computação que trata de design de bancos de dados, só que em bancos de dados relacionais clássicos se usa B-Tree ou coisa parecida, não árvores binárias.

M

a antes q esqca a resposta é 12 ok !
flw !

Criado 18 de outubro de 2007
Ultima resposta 19 de out. de 2007
Respostas 4
Participantes 2