Algoritmo de Fuerza bruta...

Iniciado por rdzlcs, 31 Diciembre 2010, 02:35 AM

0 Miembros y 1 Visitante están viendo este tema.

rdzlcs

Hola amigos, acá les traigo el algoritmo de fuerza bruta...

function fuerzabruta : integer;
                 var i, j : integer;
                 begin
                     i := 1;
                     j := 1;
                     repeat
                          if a[i] := p[j] then begin
                                                i := i + 1;
                                                j := j + 1;
                                            end
                                            else   begin
                                               i := 1 - j + 2;
                                               j := 1;
                                           end;
                 
                    until j > M  or i > N;
                    if j > M then fuerzabruta := i - M
                               else  fuerzabruta := i;
               end; 


El método obvio para la búsqueda de un patrón consiste en chequear cada posible posición en el texto en donde el patrón puede encontrarse. El programa busca de esta forma la ocurrencia del patrón p[1..M] en el string de texto a [1..N]

Bueno este algoritmo estaba, el un libro que leí hace un tiempo, que se llama, Algoritmos, datos, y programas....

SAludos


Navegando en un mar de unos y ceros. Saltando de capa en capa por un modelo que lejos de ser seguro, nos da la libertad de Ser y No Ser.

Ferno

Me supongo que en la condición, en vez de ":=" iría un "=". verdad?

rdzlcs

Cita de: Ferno en 31 Diciembre 2010, 03:07 AM
Me supongo que en la condición, en vez de ":=" iría un "=". verdad?

Es pascal, y no C, en pascal para asignarles valores a las variables se usa :=..

SAludos
Navegando en un mar de unos y ceros. Saltando de capa en capa por un modelo que lejos de ser seguro, nos da la libertad de Ser y No Ser.

Khronos14

Cita de: Ferno en 31 Diciembre 2010, 03:07 AM
Me supongo que en la condición, en vez de ":=" iría un "=". verdad?

Pero Ferno se refiere a una condición, estás usando el operador de asignación en una condición.


if a[i] := p[j] then begin //sería =


Además, aquí creo que los paréntesis son necesarios.


until (j > M)  or (i > N);



Para devolver un valor con una función puedes usar result, en vez del nombre de la función.

rdzlcs

Cita de: Khronos14 en 31 Diciembre 2010, 16:19 PM
Pero Ferno se refiere a una condición, estás usando el operador de asignación en una condición.


if a[i] := p[j] then begin //sería =


Además, aquí creo que los paréntesis son necesarios.


until (j > M)  or (i > N);



Para devolver un valor con una función puedes usar result, en vez del nombre de la función.

Muchas Gracias!!

Siempre ha cada segundo se aprende algo...

SAludos..

Feliz Año
Navegando en un mar de unos y ceros. Saltando de capa en capa por un modelo que lejos de ser seguro, nos da la libertad de Ser y No Ser.