# Finding “hidden” subassemblies: Suggestions for algorithms

I'm faced with an interesting problem and need some help finding existing best techniques to solve it. The setup is that we're analyzing a large system trying to find what I call "hidden subassemblies." Using round numbers, there are 1,000 different basic parts that are used in 10,000 different combinations or "assemblies". (I call a unique full combination an "assembly.") One assembly might have 150 parts, another 700.

What we're trying to do is efficiently detect "hidden subassemblies." Namely, groups of parts that frequently show up together. I'm sure there's an existing body of research and practice, algorithms and statistical methods for exactly this problem...but I don't know what it is, can't invent it myself (sad but true), and don't know the terminology to look it up. Can anyone point me in the right direction? This seems like a problem that would be found in manufacturing, anything related to groups of people, and genetics.

In case I haven't been clear enough, what I'm trying to find are groups of parts that are commonly (or always) used together. Say that there's a #3 bolt and it's always used along with a #3 nut. That's what I mean by a "hidden subassembly." In practice, we're actually likely to find much larger hidden subassemblies, but they may not be 100% the same across all assemblies.

I'd be incredibly grateful for suggestions. While I'm no good at inventing mathematical solutions, I can usually bang them out (eventually) if pointed in the right direction.

Thanks very much!

• Welcome to SciComp.SE! That sounds like a graph-theoretical question to me (parts are vertices, edges connect parts used in the same assembly, and you are looking for subgraphs or cliques). Maybe math.stackexchange.com or cs.stackexchange.com would be more helpful here? – Christian Clason Feb 19 '18 at 10:13
• It sounds like a clustering problem. – Deathbreath Feb 19 '18 at 22:07