logo
down
shadow

Partitioning an array into 3 sets


Partitioning an array into 3 sets

By : user2949819
Date : November 17 2020, 04:28 AM
Does that help here is brute-force java solution you can use, note - complexity of this solution is O(3^N), which is very very slow
code :
/**
 * Returns absolute difference between 3 values in array
 */
static int getdiff(final int s[])
{
    return Math.abs(s[0] - s[1]) + Math.abs(s[1] - s[2]) + Math.abs(s[2] - s[0]);
}

/**
 * Calculates all possible sums and returns one where difference is minimal
 */
static int[] getsums(final int a[], final int idx, final int[] s)
{
    // no elements can be added to array, return original
    if (idx >= a.length)
        return s;

    // calculate 3 different outcomes
    final int[] s1 = getsums(a, idx + 1, new int[] {s[0] + a[idx], s[1], s[2]});
    final int[] s2 = getsums(a, idx + 1, new int[] {s[0], s[1] + a[idx], s[2]});
    final int[] s3 = getsums(a, idx + 1, new int[] {s[0], s[1], s[2] + a[idx]});

    // calculate difference
    final int d1 = getdiff(s1);
    final int d2 = getdiff(s2);
    final int d3 = getdiff(s3);

    if ((d1 <= d2) && (d1 <= d3))
        return s1;
    else if ((d2 <= d1) && (d2 <= d3))
        return s2;
    else
        return s3;
}

static int[] getsums(final int a[])
{
    return getsums(a, 0, new int[] {0, 0, 0});
}

static void printa(final int a[])
{
    System.out.print("[");
    for (final int t : a)
        System.out.print(t + ",");
    System.out.println("]");
}

static public void main(final String[] args)
{
    final int a[] = new int[] {23, 6, 57, 35, 33, 15, 26, 12, 9, 61, 42, 27};

    final int[] c = getsums(a);

    printa(a);
    printa(c);
}
[23,6,57,35,33,15,26,12,9,61,42,27,]
[115,116,115,]


Share : facebook icon twitter icon
Partitioning a sequence into sets of unique pairs

Partitioning a sequence into sets of unique pairs


By : Divya
Date : March 29 2020, 07:55 AM
wish of those help I'm in need a of function which can split a sequence into pairs, and then combine them such that all elements in a combination is unique. I have tried a number of approaches using python's itertools, but have not found a solution. , itertoolsis indeed your friend:
code :
from itertools import permutations

def group(iterable, n=2):
    return zip(*([iter(iterable)] * n))

for each in permutations([1, 2, 3, 4, 5, 6]):
    print map(list, group(each))
[[1, 2], [3, 4], [5, 6]]
[[1, 2], [3, 4], [6, 5]]
[[1, 2], [3, 5], [4, 6]]
[[1, 2], [3, 5], [6, 4]]
[[1, 2], [3, 6], [4, 5]]
[[1, 2], [3, 6], [5, 4]]
[[1, 2], [4, 3], [5, 6]]
[[1, 2], [4, 3], [6, 5]]
[[1, 2], [4, 5], [3, 6]]
...
from itertools import combinations

def setpartition(iterable, n=2):
    iterable = list(iterable)
    partitions = combinations(combinations(iterable, r=n), r=len(iterable) / n)
    for partition in partitions:
        seen = set()
        for group in partition:
            if seen.intersection(group):
                break
            seen.update(group)
        else:
            yield partition

for each in setpartition([1, 2, 3, 4]):
    print each
print
for each in setpartition([1, 2, 3, 4, 5, 6]):
    print each
((1, 2), (3, 4))
((1, 3), (2, 4))
((1, 4), (2, 3))

((1, 2), (3, 4), (5, 6))
((1, 2), (3, 5), (4, 6))
((1, 2), (3, 6), (4, 5))
((1, 3), (2, 4), (5, 6))
((1, 3), (2, 5), (4, 6))
((1, 3), (2, 6), (4, 5))
((1, 4), (2, 3), (5, 6))
((1, 4), (2, 5), (3, 6))
((1, 4), (2, 6), (3, 5))
((1, 5), (2, 3), (4, 6))
((1, 5), (2, 4), (3, 6))
((1, 5), (2, 6), (3, 4))
((1, 6), (2, 3), (4, 5))
((1, 6), (2, 4), (3, 5))
((1, 6), (2, 5), (3, 4))
Partitioning a superset and getting the list of original sets for each partition

Partitioning a superset and getting the list of original sets for each partition


By : Marco Aurélio Costa
Date : March 29 2020, 07:55 AM
should help you out The following should be linear time (in the number of the elements in the Ts).
code :
from collections import defaultdict

S = [1, 2, 3, 4, 5, 6,   8, 9]

T_1 = [1, 4]
T_2 = [2, 3]
T_3 = [1, 3, 4]

Ts = [S, T_1, T_2, T_3]

parents = defaultdict(int)
for i, T in enumerate(Ts):
    for elem in T:
        parents[elem] += 2 ** i

children = defaultdict(list)
for elem, p in parents.items():
    children[p].append(elem)

print(list(children.values()))
[[5, 6, 8, 9], [1, 4], [2], [3]]
flatten+partitioning vs nested record on big data sets

flatten+partitioning vs nested record on big data sets


By : R-Wis
Date : March 29 2020, 07:55 AM
will be helpful for those in need 1: The actual import row size limit for json data is 20 MB, not 64k. I've filed a doc bug to get this updated in our public documentation.
Partitioning graph into 2 sets of vertices

Partitioning graph into 2 sets of vertices


By : codesmack
Date : March 29 2020, 07:55 AM
Does that help This problem is NP hard because it is at least as hard as the partition problem.
Sketch of proof
Partitioning a matrix in 5 sets in Matlab

Partitioning a matrix in 5 sets in Matlab


By : core
Date : March 29 2020, 07:55 AM
this one helps. In order to find positions of partitioning we can use powerset for example if an element of powerset is [2 3] the set will be partitoned this way:
code :
0 -1; 
1  1; 
-----   <-- 2
1  0;
-----   <-- 3
2  1; 
2  0; 
3  1; 
3  0]
sV=[0 -1; 
     1  1; 
     1  0;  
     2  1; 
     2  0; 
     3  1; 
     3  0]

n = size(sV,1)
p=powerset(1:(n-1));

cardinality =sprintf('_%i',n);
V_all.(cardinality)(end+1)={sV};
for i = 2:numel(p)
    num_el = [p{i} n] - [0 p{i}];
    cardinality = sprintf('_%i',sort(num_el));
    cum = [0 cumsum(num_el)];
    temp = {};
    for j = 2: numel(cum)
        temp(end + 1) = {sV(cum(j-1)+1:cum(j),:)};
    end
    V_all.(cardinality)(end+1)={temp};
end
Related Posts Related Posts :
  • Computing the union and intersection of two unsorted arrays in O(nlogm) time
  • Find medians in multiple sub ranges of a unordered list
  • clustering words based on their char set
  • How to divide a number into multiple parts(not equal) so that there sum is equal to input?
  • Efficient algorithm for finding repeating bit patterns?
  • confusion about dijkstra algorithm?
  • Connected components in organized 3d point cloud data
  • Worst case NlogN algorithm for Nuts and bolts matching
  • Is recursion or stack necessary for factorial time complexity algorithms?
  • hashing mechanism to hash an input (0 to 2^32 - 1) to a fixed possibly 12 character hash
  • Time Complexity Of This Code Snippet
  • Number of Triangles Containing The Point (0,0)
  • Finding a maximal sorted subsequence
  • Merging Binary search tree
  • Travel the checkerboard from top left to bottom right with lowest cost
  • Dynamic Programming solving an algorithm
  • How can a heap be used to optimizie Prim's minimum spanning tree algorithm?
  • Confusion about the combine step in Merge Sort Code
  • Efficient way to look up dictionary
  • shadow
    Privacy Policy - Terms - Contact Us © ourworld-yourmove.org