       Re: recode procedural algorithm to faster functional module

• To: mathgroup at smc.vnet.net
• Subject: [mg44169] Re: recode procedural algorithm to faster functional module
• From: Dr Bob <drbob at bigfoot.com>
• Date: Sat, 25 Oct 2003 06:26:19 -0400 (EDT)
• Sender: owner-wri-mathgroup at wolfram.com

```Here's a simple answer (not necessarily the fastest):

overlapping[{a_, b_}, {c_, d_}] := Or[a == c, a < c < b, c < a < d]
Count[Flatten@Outer[overlapping, v1, v2, 1], True]

More efficient algorithms are possible if you can guarantee the bricks in
each list are non-overlapping and exhaustive.

Bobby

From: "Prince-Wright, Robert G SEPCO" <robert.prince-wright at shell.com>
To: mathgroup at smc.vnet.net

and hopefully runs a lot faster. The Lists V1 and V2 represent two time
series with 'bricks' laid out along them. The Bricks have varying length
set by v[[i]][] and v[[i]][] and the idea is to count the number
of times there is an overlap. I can only see the dumb procedural way of
taking each brick and checking if it overlaps in time with another!

Concurrence[v1_List, v2_List,nsim_]:=Module [

{k=1,c=0},
Do[
Do[
Which[
v1[[i]][] == v2[[k]][], c=c+1,
v1[[i]][] < v2[[k]][] && v1[[i]][] > v2[[k]][], c=c+1,
v1[[i]][] > v2[[k]][] && v1[[i]][] < v2[[k]][], c=c+1
];
(*Write[ strm1, {v1[[i]][],v2[[i]][],c}];*)
, {i,1,nsim}
], {k,1,nsim}
];
c
]

I've have a PowerPoint illustration if this is unclear and can e-mail it.

thanks
Robert Prince-Wright

```

• Prev by Date: Re: ProductLog[-Pi/2]
• Next by Date: Re: Baffling Failure when plotting multiple curves.
• Previous by thread: Re: recode procedural algorithm to faster functional module
• Next by thread: Can someone tell me why NDsolve isn't working here?