установить рекурсивный алгоритм редукции

1

Учитывая (A, B, C, D)

Что такое алгоритм, который может уменьшить его до уникальных не дублированных множеств размера n.

Например, если n равно 3.

[A,B,C]
[A,C,D]
[A,B,D]
[B,C,D]

Как вы заметили, A, A, A не может быть действительным, ни A, A, B и [A, C, D] = [C, A, D] = [A, C, D] = [D, C, A] = и т.д..

есть способ не генерировать силовой набор и уменьшать его, потому что набор из 7 элементов равен n ^ 7, который быстро становится исчерпывающим.

  • 1
    (1) Вы ищете количество комбинаций, есть много информации, как этого добиться. (2) Есть Choose(N,k)=n!/(nk)!k! , из тех. (3) Размер блока питания составляет 2^n , а не n^n , поэтому для 7 элементов - это 2 ^ 7.
Теги:
algorithm

1 ответ

3
Лучший ответ

Взгляните на Math_Combinatorics.

<?php
require 'Combinatorics.php';

$combinatorics = new Math_Combinatorics;
$result = $combinatorics->combinations( ['A','B','C','D'], 3 );
var_export($result);

печать

array (
  0 => 
  array (
    0 => 'A',
    1 => 'B',
    2 => 'C',
  ),
  1 => 
  array (
    0 => 'A',
    1 => 'B',
    3 => 'D',
  ),
  2 => 
  array (
    0 => 'A',
    2 => 'C',
    3 => 'D',
  ),
  3 => 
  array (
    1 => 'B',
    2 => 'C',
    3 => 'D',
  ),
)

Он также имеет метод permutations (т.е. [A, B, C]! = [A, C, B] и, следовательно, оба находятся в наборе результатов)

  • 0
    привет не могли бы вы сказать мне, как установить эту библиотеку для PHP?
  • 0
    Этот пакет не имеет зависимостей, поэтому вы можете просто скачать zip-архив и поместить файл combinatorics.php где-нибудь, где его можно «найти». У PEAR (2) есть свой собственный установщик, см. Pear.php.net/manual/en/pyrus.php . Но composer находится на подъеме, см. Bioinfornetics.blogspot.de/2014/01/…

Ещё вопросы

Сообщество Overcoder
Наверх
Меню