Friday, May 10, 2019

[gugzzaqh] Doing tasks at exponentially varied frequencies

Number the tasks 1, 2, 3,... N.

Day 0: Do all tasks.  On following days, do all tasks except those directed to be skipped.

Day 1: Skip tasks 2, 4, 6,... (multiples of 2).

Day 2: Skip tasks 4, 8, 12,... (multiples of 4).

Day 3, 5, 7,...: Same as day 1.

Day 4: Skip tasks 8, 16, 24,... (multiples of 8).

Day 6, 10, 14,...: Same as day 2.

Day 8: Skip tasks 16, 32, 48,... (multiples of 16).

Day 12, 20, 28,...: Same as day 4.

Day (odd)*2^n: Skip multiples of 2^(n+1).

It's important to number tasks starting at 1 not 0 because task 0 would always be skipped: 0 is a multiple of everything.

The skip multiple for a given day depends on the number of trailing zeros in the binary representation of the day number.  Count Trailing Zeros (CTZ) or Find First Set.

If the skip multiple is larger than the number of tasks, you end up doing all tasks, not skipping any.

We used F(n) = 2^(n+1) as the skip multiples.  Any sequence that grows multiplicatively could be used instead, e.g., 3^n or n!.

Motivation was design of an experiment in which interesting things might happen with subjects interacted with frequently, or with subjects interacted with rarely.  We wanted a range of interaction rates, but skewed toward high frequency.

Example application: watering a collection of plants, with some plants watered more frequently.

We could also consider interaction rates not decaying exponentially, but that would require a different bookkeeping method.

No comments :